drf之权限控制

发布时间 2024-01-06 20:03:51作者: jntmwl

权限控制

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:若依