权限控制
1、acl权限控制:访问控制列表 Access Control List
# drf 中有权限控制
# 真正的权限控制有:
1 acl权限控制:访问控制列表 Access Control List
-互联网,对外项目
-用户可以:
user_id:1=[刷视频,评论,收藏,开直播]
user_id:2=[刷视频]
-表表示出权限
用户表:
id name
1 王叔
2 李四
3 张三
权限表:
id user_id permission_id
1 1 1
2 1 2
3 1 3
4 1 4
5 2 1
权限详情表:
id name url method
1 刷视频 /video/ get
2 评论 /commit/ post
3 收藏
4 开直播
-权限类:根据当前登录用户---》取出它所有权限,权限列表---》当前访问的比如是评论,如果有权限,返回True,没有权限,返回false
2 rabc权限控制:基于角色的访问控制 Role-Based Access Control
-公司内部项目
-用户属于某个角色
-角色跟权限有对应关系
- 公司内有 财务 hr 开发 总裁
-财务:张三,李四 :发工资权限,扣工资权限
-hr: 王铁锤,王五 :招员工,开除员工
-开发:张二蛋,李小红: 看代码 开发代码,删除代码
-总裁:lqz :查看公司财报
-rbac表设计
-用户表:用户和角色是 多对多
-角色表(部门,组): 角色和权限 多对多
-权限表:
-用户和权限:多对多
-总共6 张表,表示基于角色的访问控制:rbac+acl
-django的后台管理就是基于rbac控制---》auth下有些表
auth_user:# 用户表
auth_group:# 组表(角色)
auth_permission:# 权限表
auth_group_permissions # 组和权限中间表
auth_user_groups # 用户和组 中间表
auth_user_user_permissions# 用户和权限多对多中间表
-演示rbac权限控制
-创建一个超级用户 root 123456 对网站有所有权限
-创建一个用户[张三],创建一个组[测试组1],给测试组1加权限[book的增删查改]
-张三登录,发现张三有 测试组1的所有权限
-新增用户李四,没有任何组,登录后没有任何权限
-把李四放到 测试组1 ,有测试组1的所有权限:查看图书,修改图书,删除图书
-李四增加一个新增图书权限:
-新增图书权限 加入到 测试组1 张三也有这个权限,不好
-单独给李四增加一个 新增图书权限
3 ABAC:Attribute-Based Access Control,基于属性的访问控制-公司内部项目
# 公司内部项目,所有项目几乎都要有rbac权限
-基于django的admin做二次开发---》美化页面--》混合
-django+vue--》实现基于rbac的访问控制
-django-vue-admin
-gin-vue-admin:
-java:若依