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

简介:

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

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

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

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

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

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

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

2.权限检查的抽象

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

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

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

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

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

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

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

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

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

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

相关文章
|
1月前
|
安全 Java 数据安全/隐私保护
通用权限管理模型
通用权限管理模型
37 0
通用权限管理模型
|
5月前
|
安全 Java 数据安全/隐私保护
构建高效网站后台:权限管理系统设计与实现
【7月更文挑战第5天】在现代Web应用开发中,权限管理是后台系统不可或缺的一部分,它确保了系统的安全性与用户数据的隐私。良好的权限管理系统能够精细控制不同用户角色对功能模块及数据资源的访问权限,从而提升系统的灵活性和安全性。本文将深入探讨权限管理的基本概念、设计思路,并通过一个简单的代码示例展示如何在Web后台中实现基本的权限控制逻辑。
387 2
|
6月前
|
存储 安全 数据库
实现精细的权限控制系统的方法与实践
实现精细的权限控制系统的方法与实践
|
7月前
|
安全 数据安全/隐私保护
权限系统模型有哪些?
权限系统模型有哪些?
|
缓存 安全 Java
【权限管理框架】一文看懂Shiro权限管理框架!1
【权限管理框架】一文看懂Shiro权限管理框架!
|
存储 缓存 运维
基于RBAC模型的权限管理设计
RBAC模型(Role-Based Access Control:基于角色的访问控制)是比较早期提出的权限实现模型,在多用户计算机时期该思想即被提出,其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有代表,并得到了普遍的公认。 RBAC认为权限授权的过程可以抽象地概括为:Who是否可以对What进行How的访问操作,并对这个逻辑表达式进行判断是否为True的求解过程,也即是将权限问题转换为Who、What、How的问题,Who、What、How构成了访问权限三元组,具体的理论可以参考RBAC96。
568 0
基于RBAC模型的权限管理设计
|
存储 缓存 算法
【权限管理框架】一文看懂Shiro权限管理框架!2
【权限管理框架】一文看懂Shiro权限管理框架!
|
NoSQL Java Redis
【权限管理框架】一文看懂Shiro权限管理框架!3
【权限管理框架】一文看懂Shiro权限管理框架!
|
存储 设计模式 缓存
权限管理系统,可以这么设计
权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。对权限做管理的系统,就是权限管理系统。
|
PHP 数据库 数据安全/隐私保护
简单权限管理设计
这套权限管理是配合Zend Framework设计的,用在其他地方的时候可以做些修改。
简单权限管理设计