[Django REST framework - RBAC-基於角色的訪問控制、base64編碼 、xadmin的使用]
RBAC-基於角色的訪問控制
RBAC 是基於角色的訪問控制(Role-Based Access Control )
在 RBAC 中,許可權與角色相關聯,使用者通過成為適當角色的成員而得到這些角色的許可權。這就極大地簡化了許可權的管理。這樣管理都是層級相互依賴的,許可權賦予給角色,而把角色又賦予使用者,這樣的許可權設計很清楚,管理起來很方便。
應用
RBAC - Role-Based Access Control
Django的 Auth元件 採用的認證規則就是RBAC
- 1)像專門做人員許可權管理的系統(CRM系統)都是公司內部使用,所以資料量都在10w一下,一般效率要求也不是很高
- 2)使用者量極大的常規專案,會分兩種使用者:前臺使用者(三大認證) 和 後臺使用者(BRAC來管理)
結論:沒有特殊要求的Django專案可以直接採用Auth元件的許可權六表,不需要自定義六個表,也不需要斷開表關係,單可能需要自定義User表
前後臺許可權控制
- 1)後臺使用者對各表操作,是後臺專案完成的,我們可以直接藉助admin後臺專案(Django自帶的)
- 2)後期也可以用xadmin框架來做後臺使用者許可權管理
- 3)前臺使用者的許可權管理如何處理<
- 定義了一堆資料介面的檢視類,不同的登入使用者是否能訪問這些檢視類,能就代表有許可權,不能就代表無許可權
- 前臺使用者許可權用drf框架的 三大認證
Django的內建RBAC(六表)
1 許可權3個表
- 使用者表:auth_user
- 角色表:auth_group
- 許可權表:auth_permission
2 許可權6個表(正常是5個表),django的auth,用的就是6表
- 使用者表:auth_user
- 角色表:auth_group
- 許可權表:auth_permission
- 角色和許可權是多對多:auth_group_permissions (G_P關係表)
- 使用者和角色是多對多:auth_user_groups (U_G關係表)
- 使用者和許可權的多對多表:auth_user_user_permissions (U_P關係表)
許可權六表:RBAC - Role-Based Access Control
三表
許可權六表
總結
# 1)後臺使用者對各表操作,是後臺專案完成的,我們可以直接藉助admin後臺專案(Django自帶的)
# 2)後期也可以用xadmin框架來做後臺使用者許可權管理
# 3)前臺使用者的許可權管理如何處理
# 定義了一堆資料介面的檢視類,不同的登入使用者是否能訪問這些檢視類,能就代表有許可權,不能就代表無許可權
# 前臺使用者許可權用drf框架的 三大認證
# 注:前臺使用者許可權會基於 jwt 認證
做專案是否要分表管理前後臺使用者
"""
1)是否需要分表
答案:不需要
理由:前後臺使用者共存的專案,後臺使用者量都是很少;做人員管理的專案,基本上都是後臺使用者;前後臺使用者量都大的會分兩個專案處理
2)使用者許可權六表是否需要斷關聯
答案:不需要
理由:前臺使用者佔主導的專案,幾乎需求只會和User一個表有關;後臺使用者佔主導的專案,使用者量不會太大
3)Django專案有沒有必須自定義RBAC六表
答案:不需要
理由:auth元件功能十分強大且健全(驗證密碼,建立使用者等各種功能);admin、xadmin、jwt、drf-jwt元件都是依賴auth元件的(自定義RBAC六表,外掛都需要自定義,成本極高)
"""
base64編碼
# base64編碼
### 編碼
import base64
import json
dic={'name':'lqz','id':1}
user_info_str=json.dumps(dic) # 序列化為str型別
# res=base64.b64encode(bytes(user_info_str,encoding='utf-8'))
↑ ↓ 相等
res=base64.b64encode(user_info_str.encode('utf-8'))
print(res) # eyJuYW1lIjogImxxeiIsICJpZCI6IDF9
### 解碼
res=base64.b64decode('TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ='.encode('utf-8'))
print(res)
### 注意:base64長度是4的倍數,如果不足,需要用 = 補齊
xadmin的使用
1 django後臺管理admin
2 xadmin,美化頁面,bootstrap+jq,
-django:1.x,2.x
-3.x以後就不用了
3 simple-ui
3.x用
4 django是1.x
pip3 install xadmin
5 django是2.x
pip install git+git://github.com/sshwsfc/xadmin.git@django2
6 碰到一個第三方外掛,有些bug
-pip3 install 名字:裝到直譯器中---》下次換了別的直譯器,改了原始碼,又得重新改
-把第三方外掛的原始碼拿出來
-放到自己專案裡,想怎麼改,就怎麼改
7 Xadmin和django的xadmin壓根沒有聯絡
-http://x.xuebingsi.com/
-純前端(html,css,js)後臺模板
-跟語言無關
-xadmin和layui的區別
基於layui寫的後臺管理模板
8 基於bootstrap的後臺管理模板
-admin lte
9 前後端分離
-後臺模板
-vue-admin