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

简介:

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

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

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

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

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

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

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

2.权限检查的抽象

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

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

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

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

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

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

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

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

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

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

相关文章
|
JavaScript Linux
linux安装pm2全过程
你要在linux上安装pm2有很多方法,但我是用node的工具npm来完成安装的,所以在安装pm2之前需要先安装node
4857 1
|
Java
【IntelliJ IDEA】中文乱码问题 ( 代码乱码 | 编译乱码 | 控制台乱码 )
【IntelliJ IDEA】中文乱码问题 ( 代码乱码 | 编译乱码 | 控制台乱码 )
2511 0
【IntelliJ IDEA】中文乱码问题 ( 代码乱码 | 编译乱码 | 控制台乱码 )
|
IDE 网络协议 Java
2021最新 IDEA 启动失败 & 启动Spring boot 项目端口被占用问题 彻底解决方案
2021最新 IDEA 启动失败 & 启动Spring boot 项目端口被占用问题 彻底解决方案
1048 0
2021最新 IDEA 启动失败 & 启动Spring boot 项目端口被占用问题 彻底解决方案
|
11月前
|
Python
Python调用函数并获取返回值
通过本文的介绍,我们详细了解了如何在Python中定义和调用函数,传递参数,以及获取函数的返回值。掌握这些基本操作是编写高效、清晰和可维护Python代码的基础。希望这些内容能够帮助你在实际编程中更好地使用函数。
381 18
|
10月前
|
物联网 数据挖掘 BI
基于阿里云物联网平台(IoT)的智能家居系统开发与部署
随着物联网技术的发展,智能家居成为提升生活品质的重要方向。阿里云物联网平台提供设备接入、数据管理及应用开发能力,支持亿级设备接入、高效数据管理和灵活应用开发,确保系统安全。本文通过实战案例展示如何基于该平台构建智能家居系统,涵盖设备接入、远程控制、场景联动与数据分析等功能,助力企业快速部署智能家居解决方案。
Unable to create tempDir. java.io.tmpdir is set to /tmp
Unable to create tempDir. java.io.tmpdir is set to /tmp
180 0
|
SQL Java 关系型数据库
SpringBoot系列教程JPA之delete使用姿势详解
常见db中的四个操作curd,前面的几篇博文分别介绍了insert,update,接下来我们看下delete的使用姿势,通过JPA可以怎样删除数据
825 0
SpringBoot系列教程JPA之delete使用姿势详解
|
Java 程序员 API
全民上手大模型--ollama+langchain+通义千问零费用java+python跑通本机大模型
全民上手大模型--ollama+langchain+通义千问零费用java+python跑通本机大模型
1482 0
|
开发者
BizDevOps最全最体系化资料集
BizDevOps最全最体系化资料集
1133 0
|
安全 Java Maven
SonarQube最佳实践
SonarQube最佳实践
1020 0