一种基于主客体模型的权限管理框架

简介:

用户权限体系,在大多数的应用系统中都是需要的。而用户权限体系在不同的应用场景,其适应要求也都有不同。因此,要做一个普适性较好的权限管理系统是非常困难的。

为此,本文提出一种新的权限管理及分配模型,即兼顾通用性,又兼顾应用的个性化。

1.基本概念的抽象
在权限框架中,有用户、角色、组织机构、部门、岗位、菜单、操作、功能等等,甚至组织机构还要分成几个维护,有行政维护、账务维度等等,把这么复杂的模型在一个系统中都实现,会有以下几种情况出现:

a.这个太好了,正是我要的(命中概率约为0)
b.功能还不错,有些设计超出了我的应用范围,但是我有些功能用不上(概率10%)
c.功能都是我要的,有些设计不足,需要进行一些扩展(概率10%)
d.功能有一部分不是我要的,有一部分不满足我要的功能(概率80%)

这也是目前我们的应用现状。

仔细分析上面的一些概念,有且不仅限于上面列出的内容,通过分类,可以划分为两个群体,权限主体和权限客体。
所谓权限主体,就是可以拥有权限的概念,如:用户、角色、岗位、部门、机构等;所为权限客体,就是可以被用来进行权限控制的概念,如:菜单、功能、操作等。

通过抽象权限主体和权限客体,就可以把复杂的权限模型简化成权限主体与权限客体之间的关系。管你有多少种权限主体,不管你有多少权限客体,都在我的圈圈里面,这样适应性自然不是一般的好。

2.权限检查的抽象

实际应用当中,权限检查的方式,也是有许多种情况的,比如:

允许方式 :凡是允许的就可以执行,否则就不可以执行

禁止方式:凡是禁止的就不可以执行,否则就可以执行

允许优先方式:可以有禁止有允许,但是只要有允许就可以被执行

禁止优先方式:可以有禁止有允许,但是只要有禁止就不可以被执行

权限主体可继承方式,就是说权限主体被授权表示其下级的内容可以被授权

权限客体可继承方式,就是说权限客体被授权的内容,代表其下级也被授权

当然,还可以有N种方式,这个熟悉设计模式的同仁一眼就可以看出,这正好可以利用行为模式进行解决。

当项目中的技术经理选择哪种授权模式的时候,只要配置或实现相应的策略即可。

如此,就可以把权限框架中最复杂的两个部分分离抽象出来,你想要什么样的权限模型,需要什么样的授权策略,都可以充分适应。

相关文章
|
3月前
|
前端开发 数据安全/隐私保护
若依框架---权限控制角色设计
若依框架---权限控制角色设计
252 0
|
2月前
|
安全 数据安全/隐私保护
权限系统模型有哪些?
权限系统模型有哪些?
|
3月前
|
SQL 前端开发 数据安全/隐私保护
若依框架---权限管理设计
若依框架---权限管理设计
177 0
|
9月前
|
存储 运维 监控
三大架构图—结合若依权限管理系统
最近在进行架构师的培训,结合具体的项目也许能够帮助我们更好的理解架构对我们而言的意义,今天我着重从技术架构图来讨论架构图的具体应用
|
11月前
|
存储 缓存 运维
基于RBAC模型的权限管理设计
RBAC模型(Role-Based Access Control:基于角色的访问控制)是比较早期提出的权限实现模型,在多用户计算机时期该思想即被提出,其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有代表,并得到了普遍的公认。 RBAC认为权限授权的过程可以抽象地概括为:Who是否可以对What进行How的访问操作,并对这个逻辑表达式进行判断是否为True的求解过程,也即是将权限问题转换为Who、What、How的问题,Who、What、How构成了访问权限三元组,具体的理论可以参考RBAC96。
422 0
基于RBAC模型的权限管理设计
|
存储 设计模式 缓存
权限管理系统,可以这么设计
权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。对权限做管理的系统,就是权限管理系统。
|
PHP 数据库 数据安全/隐私保护
简单权限管理设计
这套权限管理是配合Zend Framework设计的,用在其他地方的时候可以做些修改。
简单权限管理设计
|
数据安全/隐私保护
如何设计一个完美的权限管理模块?
我们比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联。简单地说,一个用户拥有多个角色,一个角色拥有多个权限。
如何设计一个完美的权限管理模块?
|
数据安全/隐私保护 开发者
|
数据库 数据安全/隐私保护 开发框架