我在這裏有一個奇怪的問題。當我登錄時,它可以正常工作,但是當我嘗試註銷並嘗試重新登錄時,它說我的密碼無效。Django的驗證()重置密碼
我查了我的用戶表,它真的改變我使用的身份驗證()函數我的密碼每次。
我得到這個錯誤在一個月前(Django的還是1.8當時),但許多測試和跟蹤,禱告並沒有一個知道發生了什麼之後消失。它只發生在我的本地機器上。
authentication.py
後進行身份驗證()函數,我的密碼已被更改(試圖把一個斷點功能後,所以我肯定知道這是罪魁禍首)。
from django.contrib.auth import authenticate, logout, login
def signin(request):
if request.method == "POST":
result = {}
data = req_data(request)
try:
user = authenticate(username = data['email'], password = data['password'])
if user:
if user.is_active:
login(request, user)
#return success for redirection
else:
raise ValueError("This user is inactive. Please contact your admin.")
else:
raise ValueError("Invalid username/password.")
except Exception as e:
return HttpResponse(e, status = 400)
else:
return redirect("login")
def signout(request):
logout(request)
return redirect("login")
#gets the params from ajax post
def req_data(request):
return json.loads(request.body.decode("utf-8")) if request.body.decode("utf-8") else {}
我檢查了數據庫並得到了這個結果。
舊密碼
pbkdf2_sha256 $ $ 20000 N4esMaOT5BYi $ nIehHw63b + iZSz2Vmu1hEO10BqPfzAGu1cZA1ci/NXI =
新密碼(登錄後)
pbkdf2_sha256 $ 24000 $ KVZeuG4pgSkv $ VIenbuq0Wk8sYZros4kE4Q7W0Jt + bOC23ha4/VSOXV8 =
編輯:
的同時,我不使用身份驗證()和只使用一個通用密碼。
username = data.get('email',"")
password = data.get('password',"")
if password == "genericpassword123":
try:
user = User.objects.get(email = username)
user.backend = 'django.contrib.auth.backends.ModelBackend'
except User.DoesNotExist:
raise ValueError("Invalid username/password.")
else:
user = authenticate(username = username, password = password)
if user:
if user.is_active:
login(request, user)
#return success for redirection
else:
raise ValueError("This user is inactive. Please contact your admin.")
else:
raise ValueError("Invalid username/password.")
的Python 2.7
的Django 1.9
Postgre 9.4
謝謝!
一個不可能說出問題是從單行所做的事情。顯示你的「登出」和「登錄」視圖 –
並顯示你如何驗證你的密碼是「更改」。 –
@MosesKoledoye請看更新的問題。 – aldesabido