匯入語法:from
django.contrib
import
auth
django.contrib.auth中提供了許多方法,這裡主要介紹其中的三個:(這些都是基於使用auth_user這張表的前提的)
提供使用者認證的功能,當認證成功之後會返回乙個物件,沒有返回none(一般需要倆兩個引數,username.password------和auth_user表的字段對齊)該函式接受乙個httprequest物件,以及乙個已經認證了的user物件user_obj=auth.authenticate(username='
xx',password='
ww')
authenticate()會在user 物件上設定乙個屬性標識那種認證後端認證了該使用者,且該資訊在後面的登入過程中是需要的。
當我們試圖登陸乙個從資料庫中直接取出來不經過authenticate()的user物件會報錯的!!
此函式使用django的session框架給某個已認證的使用者附加上session id等資訊。
deflogin(request):
if request.method=='
get'
:
return render(request,'
login.html')
else
: user=request.post.get('
user')
pwd=request.post.get('
pwd') #
有這個物件,返回物件,沒有值返回none
user_obj=auth.authenticate(username=user,password=pwd)
ifuser_obj:
#request.session['is_login']=true #session的寫法
#request.session['user']=user #建立一把鑰匙
auth.login(request,user_obj) #
注入session資訊 request.session['user_id']=user_obj.pk
(request.user) #request.user=user_obj
return redirect('
/index/')
else
:
return redirect('
/login/
')
登出在伺服器上的登入記錄:
def logout(request):auth.logout(request)
return render(request,'login.html') #登出後跳轉到登入頁
該函式接受乙個httprequest物件,無返回值。當呼叫該函式時,當前請求的session資訊會全部清除。該使用者即使沒有登入,使用該函式也不會報錯。
1. 之前函式執行login(),登入成功,request.user代表登入物件具有多個屬性:1. request.user.username
2. request.user.id
3. request.user.email 等等
2. 沒有登入過,anonymoususer預設匿名使用者物件
只有乙個屬性:1. reques.user.id
3.我們要明確的是:
1.request.user並不是請求體中的,而是中介軟體.middleware.authenticationmiddleware在認證成功之後幫我們注入的.(中介軟體執行優先)
2.每一次請求,都要先經過中介軟體,中介軟體會先檢查你的鑰匙,如果資料庫有你的鑰匙就把鑰匙指向的物件取出來,賦值給request.user_id,
如果沒有鑰匙的,服務端也會給request.user賦乙個值,request.user_id,匿名使用者!
3. request.user是乙個全域性變數,無論在哪乙個檢視函式中都能使用,包括頁面(template)
判斷是否登入:1.request.user.id
2.request.user.is_authenticate
#兩者區別不大
其實是乙個雙層裝飾器函式,最主要是其可以跳轉到登入前的頁面
auth_user表:from django.contrib.auth.models import
user
user.objects.create(username="
alex
",password="
123"
) #注意,這是明文的儲存
user.objects.create_user(username="
alex
",password="
123"
) #普通使用者,密文
user.objects.create_superuser(username="
alex
",password="
123") #超級使用者,密文 ,必須有email欄位,可以為空
Django 使用者認證(Auth)元件
django 使用者認證 auth 元件一般用在使用者的登入註冊上,用於判斷當前的使用者是否合法,並跳轉到登陸成功或失敗頁面。django 使用者認證 auth 元件需要匯入 auth 模組 認證模組 from django.contrib import auth 對應資料庫 from django...
Django之auth認證元件
此時我們需要實現包括使用者註冊 使用者登入 使用者認證 登出 修改密碼等功能,這還真是個麻煩的事情呢。django作為乙個完美主義者的終極框架,當然也會想到使用者的這些痛點。它內建了強大的使用者認證系統 auth,它預設使用 auth user 表來儲存使用者資料。建立使用者 python mana...
Django框架之 使用者認證auth模組
我們在開發乙個 時,無法避免的需要設計 的使用者系統,此時我們需要實現包括使用者註冊,登入,認證,登出,修改密碼等功能,把這些事全部寫一遍也挺麻煩的,django作為乙個完美主義的終極框架,也當然會為使用者想到這些痛點,它內建了強大的使用者認證系統,預設使用auth user表來儲存使用者資料 au...