[Django REST framework - RBAC-基於角色的訪問控制、base64編碼 、xadmin的使用]


[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM