[Django REST framework - RBAC-基于角色的访问控制、base64编码 、xadmin的使用]

2022-12-12,,,,

[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

[Django REST framework - RBAC-基于角色的访问控制、base64编码 、xadmin的使用]的相关教程结束。

《[Django REST framework - RBAC-基于角色的访问控制、base64编码 、xadmin的使用].doc》

下载本文的Word格式文档,以方便收藏与打印。