![](/img/trans.png)
[英]How I can fix this statement, my code does not work with tensorflow?
[英]Django user authentication does not work, how can I fix my login?
我正在使用 django-email-verification 應用程序,我不得不更改用戶的注冊方式,但我將登錄身份驗證部分保持不變。 每次我嘗試登錄時,它都不允許我登錄並說憑據錯誤。 我還使用電子郵件作為用戶名。 我認為它的:
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')
問題不在於身份驗證,而在於創建用戶。 密碼通常是散列的。 .create(…)
function [Django-doc]不會hash 這些,您可以使用.create_user(…)
[Django-doc]代替:
user = get_user_model().objects.create_user(
username=request.POST['username'],
password=request.POST['pass1'],
email=request.POST['username']
)
.create_user(…)
function 是 function 用戶 model 的經理通常應該提供的。 對於(大多數)用戶模型,這將在數據庫中存儲密碼的hash 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.