中介軟體rbac的**!
# 在這裡建立乙個中介軟體,在進入檢視以前判斷登入人員是否有許可權!
:# 得到當前訪問路徑
current_path = request.path_info
# 製造一張白名單,檢查是否在白名單裡面
valid_url_list =
["/login/"
,"/reg/"
,"/admin/.*"
]for valid_url in valid_url_list:
ret = re.match(valid_url, current_path)
# 利用正規表示式提起url
if ret:
return
none
# 檢查是否登入
user_id = request.session.get(
"user_id")if
not user_id:
return redirect(
"/login/"
)# 校驗許可權
permission_list = request.session.get(
"permissions_list",[
])# 提出url,沒有就返回空
key =
false
# 製造一把鑰匙,判斷許可權
for permission in permission_list:
permission =
"^%s$"
% permission # 拼接字串
"沒有訪問許可權"
)return
none
primisstion.py裡面存放了使用者的許可權,登入的時候把許可權加入到cookie裡面
# 在這裡註冊使用者的許可權!
definitial_permission
(user,request)
: permission = user.roles.
all(
).values(
"permissions__url"
).distinct(
) permissions_list =
for item in permission:
# print("***************=",item) item 是乙個字典物件
"permissions__url"])
# print(permissions_list) 輸出為乙個列表:['/permission/', '/permission/delet/']
# 現在把列表註冊到session裡面去!
request.session[
"permissions_list"
]= permissions_list
下面就是主檢視xiews.py的函式了
# 將使用者id註冊在session裡面和cookie一起,方便以後提取!
request.session[
"user_id"
]= user.pk
# 在session裡面註冊使用者許可權,許可權表在另外的表裡面,我們先導入
"登入成功!"
,]
人生苦短,我學python!
django許可權認證
1 首先參考django官方文件,將admin模組搭建起來 2 一般我們設定了admin為管理員,但是管理員預設具備所有許可權,即使沒有顯式賦權。3 如何查詢使用者對應的許可權 from django.contrib.auth.models import user,permission user.o...
Django設定許可權
django1.9 使用django內建的許可權驗證機制。內建許可權表名 auth permissions models.py from django.db import models class student models.model class meta 內建許可權 default permi...
Django 許可權與分組
在使用authenticate進行驗證後,如果驗證通過了。那麼會返回乙個user物件,拿到user物件後,可以使用django.contrib.auth.login進行登入。示例 如下 user authenticate username username,password password if ...