[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
posted @ 2021-07-10 16:02  刘较瘦丫  阅读(622)  评论(0编辑  收藏  举报