大家好,又见面了,我是你们的朋友全栈君。
相关名词解释
在说权限之前先来了解一下项目和应用之间的关系:
一个项目可以有多个应用,一个应用同样可以服务多个项目;它们二者之间是多对多的关系(manytomany)
在了解了项目和应用二者之间的关系之后我们再来看一下什么是权限管理:
权限管理
先来看一下官方解释:
权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。权限管理几乎出现在任何系统里面,只要有用户和密码的系统。
自己理解:
说白了所谓的权限管理就是根据不同等级的用户对同一个资源进行不同程度的相关操作,等级越高所能进行的相关操作程度越深;我们也可以理解为一个权限就是一个URL
RBAC权限模型
功能权限管理技术,一般就使用基于角色访问控制技术RBAC(Role Based Access Control)。该技术被广泛运用于各个系统,非常容易掌握。该技术模型如下图示:
分析及数据相关
分析
首先要分析在RBAC模型中涉及到哪些内容(也就是所需要的表及表结构)
用户
用户:不论在做任何的操作的前提是必须要有相关的用户根据用户自己的状态(登陆/注册)进行下一步操作。可以说用户是基础,任何的操作都是建立在有用户的基础上的,没有用户什么都没法干
角色
实事上我们不会直接把权限赋予给用户,而是通过角色来赋予给用户,因为用户拥有某一种权限是因为用户扮演着某一种角色。
A 是 个经理,他管理着B公司,他拥有b,c,d的权限。实际是不是A有这个权限,而是因为Abo是经理。因为经理拥有b,c,d权限,所以很显然在权限划 分 上,我们会把权限赋予给某一个角色,而
不是赋予给个人。这样带来的好处是如果公司换了经理,那么只要再聘用一个人来做经理就可以了,而不会出现因为权 限在 个人手里导致权限被带走的情况
权限
权限是对资源的一种保护访问.用户要访问资源前提是用户必须有对资源的访问权限.
各表之间的关系
用户表 <—> 角色表
一个用户可以扮演多个角色,同一个角色也可以属于多个用户(manytomany)
角色表 <—>权限表
同一个角色可以拥有不同的权限,同一级别的权限也可以属于多个角色(manytomany)
数据
创建表关系:
class User(models.Model): name=models.CharField(max_length=32) pwd=models.CharField(max_length=32) roles=models.ManyToManyField(to="Role") def __str__(self): return self.name class Role(models.Model): title=models.CharField(max_length=32) permissions=models.ManyToManyField(to="Permission") def __str__(self): return self.title class Permission(models.Model): title=models.CharField(max_length=32) url=models.CharField(max_length=32) def __str__(self):return self.title
View Code
由于用户和角色之间及角色和权限之间是多对多的关系,故而又生成了俩张表:
用户——角色表
角色——权限表
正式开始
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/124461.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...