我正在使用django电子邮件验证应用程序,我必须更改用户的注册方式,但我保留了登录验证部分。每次我尝试登录时,它都不允许我登录,并说凭据错误。我还使用电子邮件作为用户名。我想是:user = auth.authenticate(username=request.POST['username'], password=request.POST['password'])
这需要改变。请问如何修复登录
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib import auth
from django.contrib.auth import get_user_model
from django_email_verification import sendConfirm
def signup(request):
if request.method == 'POST':
if request.POST['pass1'] == request.POST['pass2']:
try:
user = User.objects.get(username=request.POST['username'])
return render(request, 'accounts/signup.html', {'error': 'Email is already registered'})
except User.DoesNotExist:
'''user = User.objects.create_user(request.POST['username'], password=request.POST['pass1'])
auth.login(request, user)'''
user = get_user_model().objects.create(username=request.POST['username'], password=request.POST['pass1'], email=request.POST['username'])
sendConfirm(user)
return redirect('home')
else:
return render(request, 'accounts/signup.html', {'error': 'Passwords must match'})
else:
return render(request, 'accounts/signup.html')
def login(request):
if request.method == 'POST':
user = auth.authenticate(username=request.POST['username'], password=request.POST['password'])
if user is not None:
auth.login(request, user)
return redirect('home')
else:
return render(request, 'accounts/login.html',{'error':'username or password is incorrect.'})
else:
return render(request, 'accounts/login.html')
def logout(request):
if request.method == 'POST':
auth.logout(request)
return redirect('home')
问题不在于身份验证,而在于创建用户。密码通常是散列的。^{} function [Django-doc]将而不是散列这些,您可以使用^{} [Django-doc]代替:
.create_user(…)
函数是用户模型管理员通常应该提供的函数。对于(大多数)用户模型,这将在数据库中存储密码的散列相关问题 更多 >
编程相关推荐