权限控制(acl,rbac)
一、权限控制(acl,rbac)
将来我们编写的项目主要分成两类:公司内部项目和互联网项目
- 公司内部项目
使用RBAC-基于角色的访问控制
什么是RBAC?
RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。
举例
比如在公司内部,根据部门划分权限
-用户表:用户和角色多对多关系,
-角色表
-一个角色可能有多个权限----》
-开发角色:拉取代码,上传代码
-财务角色:开工资,招人,开除人
-......
-权限表:角色和权限是多对多
-拉取代码
-上传代码
-部署项目
-开工资
-招人
-开除人
-......
-通过5张表完成rbac控制:用户表,角色表,权限表, 用户角色中间表, 角色权限中间表
-如果某个人,属于财务角色,又只是单独想要拉取代码权限,不要上传代码权限,这时候就需要另外一张表:用户和权限中间表
-通过6张表:django的admin----》后台管理就是使用这套权限认证
用户表,
角色表,
权限表,
用户角色中间表,
角色权限中间表
用户和权限中间表
django-admin就是一个典型的rbac权限管理,这里我们可以用django-admin来体验rbac的权限管理
# django -auth--6张表
auth_user 用户表
auth_group 角色表,组表
auth_permission 权限表
-----------
auth_user_groups 用户和角色中间表
auth_group_permissions 角色和权限中间表
-------------
auth_user_user_permissions 用户和权限中间表
目前流行的一些rbac
# java:若依
# go :gin-vue-admin
# python :django-vue-admin
- 互联网项目
使用ACL 权限控制
什么是ACL 权限控制?
ACL(Access Control List)访问控制列表的简称,是一个规则列表,用于指定允许或拒绝哪些用户或系统访问特定对象或系统资源,访问控制列表也安装在路由器或交换机中,它们充当过滤器,管理哪些流量可以访问网络。
举例
我们在使用抖音的时候,就是用acl进行管理
-权限:权限表----》 发视频,评论,开直播
-用户表:用户和权限是一对多
张三:[发视频,]
李四:[发视频,评论,开直播]