Django 實現密碼加密的使用者登入
阿新 • • 發佈:2018-12-18
上一篇講解的是實現密碼不加密的使用者登入,這次講解密碼加密的使用者登入,其中配置以及HTML檔案都一樣。下面說一下改動的地方
在urls.py中繫結路由
path('one/', HashLoginView.as_view())
在views.py中建立一個通用檢視:
class HashLoginView(View): def get(self, request): return render(request, 'login.html') def post(self, request): username = request.POST.get('account') password = request.POST.get('password') # 如果密碼是加密的密碼,需要使用Django的認證函式authenticate對賬號密碼進行認證。 """ authenticate認證原理: 1. 先根據使用者名稱去資料庫中查詢是否存在該使用者,如果存在該使用者,再驗證密碼是否正確,如果密碼也正確,再驗證該賬號的is_active是否被啟用(True就是激活了),如果賬號也被激活了,此時返回這個usermodel物件; 2. 如果使用者不存在,或者使用者存在但密碼是錯的,都返回None; """ user = authenticate(username=username, password=password) if user: # 說明使用者名稱和密碼都是正確的。 # 使用login()函式盡心邏輯登入。 login(request, user) # 登入成功以後,跳轉到首頁。 return redirect('/index/') else: # 如果資料不正確,不需要跳轉url地址,也不需要跳轉頁面,就需要再渲染一下頁面,展示錯誤資訊即可。 return render(request, 'login.html', {'error': '使用者名稱或密碼錯誤'})