from django.contrib import auth
django.contrib.auth中提供了許多方法,這裡主要介紹其中的三個:
提供了使用者認證,即驗證使用者名稱以及密碼是否正確,一般需要username password兩個關鍵字引數
如果認證資訊有效,會返回乙個 user 物件。authenticate()會在user 物件上設定乙個屬性來標識後端已經認證了該使用者,且該資訊在後續的登入過程中是需要的。
當我們試圖登陸乙個從資料庫中直接取出來不經過authenticate()的user物件時會報錯!!!
user = authenticate(username='theuser
',password='
thepassword
')
該函式接受乙個httprequest物件,以及乙個認證了的user物件
此函式使用django的session框架給某個已認證的使用者附加上session id等資訊。
from django.contrib.auth importauthenticate, login
defmy_view(request):
username = request.post['
username']
password = request.post['
password']
user = authenticate(username=username, password=password)
if user is
notnone:
login(request, user)
#redirect to a success page.
...
else
:
#return an 'invalid login' error message.
...
from django.contrib.auth importlogout
deflogout_view(request):
logout(request) #
redirect to a success page.
該函式接受乙個httprequest物件,無返回值。當呼叫該函式時,當前請求的session資訊會全部清除。該使用者即使沒有登入,使用該函式也不會報錯。
要求:1 使用者登陸後才能訪問某些頁面,
2 如果使用者沒有登入就訪問該頁面的話直接跳到登入頁面
3 使用者在跳轉的登陸介面中完成登陸後,自動訪問跳轉到之前訪問的位址
方法1:
defmy_view(request):
ifnotrequest.user.is_authenticated():
return redirect('
%s?next=%s
' % (settings.login_url, request.path))
方法2:
django已經為我們設計好了乙個用於此種情況的裝飾器:login_requierd()
from django.contrib.auth.decorators importlogin_required
@login_required
defmy_view(request):
...
若使用者沒有登入,則會跳轉到django預設的 登入url '/accounts/login/ ' (這個值可以在settings.py檔案中通過login_url進行修改)。並傳遞 當前訪問url的絕對路徑 (登陸成功後,會重定向到該路徑)。
Django 使用者認證系統
二 auth模組 django內建乙個使用者認證系統,使用auth模組實現。auth模組提供了登入 註冊 效驗 修改密碼 登出 驗證使用者是否登入等功能。auth user 使用者表 auth user groups 使用者所屬組的表 auth user user permissions 使用者許可...
django自帶認證系統
使用者 許可權密碼雜湊系統 表單和檢視工具django內建認證系統不支援的板塊 密碼強度 我們通過第三方包解決 限制登入次數 自定義中介軟體解決 物件級許可權 django只支援到模型級 建立普通使用者 使用者資訊儲存在模型類的user表中。可以使用django auth 封裝的create use...
Django中的使用者認證系統
auth模組是django提供的標準許可權管 系統,可以提供使用者身份認證,使用者組和許可權管 django 內建了user模型,包含了username,password,email等字段資訊。但是實際使用時,可能會包含一些其他的字段資訊,例如手機號,頭像,簽名資訊等。此時需要在系統的user模型上...