2016-11-09 96 views
2

我在這裏有一個奇怪的問題。當我登錄時,它可以正常工作,但是當我嘗試註銷並嘗試重新登錄時,它說我的密碼無效。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

謝謝!

+1

一個不可能說出問題是從單行所做的事情。顯示你的「登出」和「登錄」視圖 –

+1

並顯示你如何驗證你的密碼是「更改」。 –

+0

@MosesKoledoye請看更新的問題。 – aldesabido

回答

0

它的工作現在。我從來沒有想過它可以在不同密碼的賬戶中使用。