django元件之使用者認證元件

2022-05-30 09:03:08 字數 2762 閱讀 7928

匯入語法:fromdjango.contribimportauth

django.contrib.auth中提供了許多方法,這裡主要介紹其中的三個:(這些都是基於使用auth_user這張表的前提的)

提供使用者認證的功能,當認證成功之後會返回乙個物件,沒有返回none(一般需要倆兩個引數,username.password------和auth_user表的字段對齊)

user_obj=auth.authenticate(username='

xx',password='

ww')

authenticate()會在user 物件上設定乙個屬性標識那種認證後端認證了該使用者,且該資訊在後面的登入過程中是需要的。

當我們試圖登陸乙個從資料庫中直接取出來不經過authenticate()的user物件會報錯的!!

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

此函式使用django的session框架給某個已認證的使用者附加上session id等資訊。

def

login(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

print

(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...