Django自帶的使用者認證

2021-10-09 02:10:41 字數 1915 閱讀 9623

auth模組:

from django.contrib import auth

auth模組中的方法:

authenticate()

提供了使用者認證功能,即驗證使用者名稱以及密碼是否正確,一般需要username 、password兩個關鍵字引數。

如果認證成功(使用者名稱和密碼正確有效),便會返回乙個 user 物件。

該函式接受乙個httprequest物件,以及乙個經過認證的user物件。

該函式實現乙個使用者登入的功能。它本質上會在後端為該使用者生成相關session資料

用法:from django.contrib.auth import authenticate, login

def my_view(request):

username = request.post[『username』]

password = request.post[『password』]

user_obj = authenticate(username=username, password=password)

if user_obj:

login(request, user_obj)

logout(request)

該函式接受乙個httprequest物件,無返回值。

當呼叫該函式時,當前請求的session資訊會全部清除。該使用者即使沒有登入,使用該函式也不會報錯

from django.contrib.auth import logout

def logout_view(request):

logout(request)

login_requierd()

auth 給我們提供的乙個裝飾器工具,用來快捷的給某個檢視新增登入校驗。

若使用者沒有登入,則會跳轉到django預設的 登入url '/accounts/login/ 』 並傳遞當前訪問url的絕對路徑 (登陸成功後,會重定向到該路徑)。

如果需要自定義登入的url,則需要在settings.py檔案中通過login_url進行修改。

1login_url = 『/login/』 # 這裡配置成你專案登入頁面的路由

set_password(raw_password)

auth 提供的乙個修改密碼的方法,接收 要設定的新密碼 作為引數。

事例:修改密碼

擴充套件預設的auth_user表

from django.contrib.auth.models import abstractuser

class userinfo(abstractuser):

「」"使用者資訊表

「」"nid = models.autofield(primary_key=true)

phone = models.charfield(max_length=11, null=true, unique=true)

def __str__(self):

return self.username

按上面的方式擴充套件了內建的auth_user表之後,一定要在settings.py中告訴django,我現在使用我新定義的userinfo表來做使用者認證。寫法如下:

自定義認證系統預設使用的資料表之後,我們就可以像使用預設的auth_user表那樣使用我們的userinfo表了。比如:

建立普通使用者:

userinfo.objects.create_user(username=『使用者名稱』, password=『密碼』)

建立超級使用者:

userinfo.objects.create_superuser(username=『使用者名稱』, password=『密碼』)

django自帶認證系統

使用者 許可權密碼雜湊系統 表單和檢視工具django內建認證系統不支援的板塊 密碼強度 我們通過第三方包解決 限制登入次數 自定義中介軟體解決 物件級許可權 django只支援到模型級 建立普通使用者 使用者資訊儲存在模型類的user表中。可以使用django auth 封裝的create use...

django自帶的使用者系統

基本上在任何 上,都無可避免的需要設計實現 的使用者系統。此時我們需要實現包括使用者註冊 使用者登入 使用者認證 登出 修改密碼等功能。使用django,我們可以不需要自己寫這些功能,因為django內建了強大的使用者認證系統 auth,它預設使用 auth user 表來儲存使用者資料。from ...

django 自帶的使用者系統

第一步 系統配置使用者表 首先,在models中建立使用者表,導包 from django.contrib.auth.models import abstractuser 建立使用者表 class user abstractuser username models.charfield max len...