django實(shí)現(xiàn)用戶權(quán)限

我們經(jīng)常會有這樣的需求,給不同的用戶顯示不同的頁面,這樣的功能在Django是怎么實(shí)現(xiàn)在的呢?

其實(shí)這個邏輯很簡單,我們可以先預(yù)先設(shè)置好幾個組,每個組顯示的頁面都不同,我們可以把用戶分配到對應(yīng)的組里面,具體來說:

第一當(dāng)然是建立用戶表,我們選擇重寫Django自帶的用戶表,這樣就是繼承abstractuser了,然后再settings里填入AUTH_USER_MODEL = 'users.UserProfile',在類里面添加我們新的字段即可.

django自帶的權(quán)限管理更適合后臺管理,來管理控制某個用戶對后臺操作的權(quán)限,就是 add, change, delete權(quán)限。

那我們怎么自定義權(quán)限呢?

首先要在models中建立權(quán)限的名稱和描述信息,這個信息是在django admin中設(shè)置權(quán)限時顯示的信息.另外還要注意的是,我們必須為url設(shè)置name, 因?yàn)闄?quán)限需要和urlname配合使用,

第二,建立一個權(quán)限表Permission, 將權(quán)限的名稱,url名稱,請求方法(get or post), 參數(shù)列表保存進(jìn)去

第三步, 定義判斷權(quán)限的方法,這個就是描述你這個權(quán)限是干什么的,你想顯示什么樣的頁面,就在這里面寫好定義.

最終邏輯是這樣的:

用戶發(fā)送一個請求(打開一個頁面), 先獲取url地址,根據(jù)url地址得到urlname, 再獲取請求方法和參數(shù),然后使用(urlname, 請求方法,參數(shù)列表)這樣一個映射關(guān)系,到數(shù)據(jù)庫中查詢,能查詢到之后說明這個權(quán)限存在;然后再使用request.user.has_perm()來判斷該用戶是否具有該權(quán)限。

有權(quán)限,則根據(jù)我們第三步定義好的規(guī)則去返回,如果沒有,則需要我們再定義一個403頁面,這樣的話,就大功告成啦.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容