一. 概述
本文根据对中小型应用系统的权限系统的需求进行阐述,并对通常用于实现权限系统的两种思想、技术策略以及技术实现方案进行描述,比较其优缺点,同时对开源类型的产品进行介绍,最后结合自己的实际经验介绍自己的实现方案以及碰到的难点。
本文并不是什么理论化的文章,完全是实战型的总结和实战的讨论,至于理论请大家去参考更为专业的文章。
二. 目的
此文的编写作为自己对于权限系统进行系统化的整理,毕竟权限系统是几乎所有系统中都需要的,但一直以来由于在权限系统上并没有什么通用的方案,所以几乎是N多的人都实现了自己的一套,在此我也是抛砖引玉。
三. 需求
3.1. 描述
这里对于需求的描述都是基于自己工作以来实际项目需求的经验而综合的,如有遗漏之处欢迎大家补充,不过也希望大家明白范围,是指中小型系统,至于大型的企业系统从来就没做过,我也无从提出需求。
从一个实际的场景来描述一般中小型系统中涉及的权限需求吧,在通常的B/S系统中,首页列出不需登录可访问的信息,登录后则根据用户拥有的权限显示相应的菜单,在具体菜单对应的模块里根据用户的权限显示相应权限的按钮,同时显示当前用户可访问的相应的资源。
非功能性的需求:
l 简便的授权方式。避免每增加一个用户就要不断的去授予N多的权限,避免相同权限的用户还要去相同的授予,提供出分组的功能。
l 权限的继承。在上面提出分组的功能后考虑到组应支持嵌套功能,即子组自动继承父组的权限,这样授权时就更加简便了。
l 高性能。不能因为校验权限而严重影响到系统的性能。
l 安全性。除正常途径方式访问系统的保护外,也需要避免通过非正常的途径访问系统中受保护的资源。
除了这些用户通常直接提出的需求外,在实际的项目中通常还会有这些需求:
l 权限的排斥和包含。用户在实际的使用后通常会提出这个需求,权限的排斥主要是指当用户拥有权限A时则不能同时再拥有权限B,这个在实现了权限继承的系统中尤为突出;权限的包含主要指当用户拥有权限A时自动拥有了权限B,实际的例子是当用户拥有管理权限时自动同时拥有访问权限。
l 系统资源权限的继承。在对带有分级性质的资源进行授权时子资源自动继承父资源的权限,这个在文档管理类型的系统中比较常见,即目录中的文档自动拥有目录的权限。
l 系统资源权限的多种授予对象。通常系统的权限是授予到角色中,而对于系统资源的权限授予上用户在使用后通常会提出需要授予到多种对象,除角色之外还需可授予给组织机构或者具体的用户。
3.2. 分析
对需求中列出的场景进行分析:
l 上下文
未登录用户、登录用户、管理用户不同的界面等情况。
l 问题
如何识别是否为登录用户、管理用户或未登录用户。
l 解决方案
提供身份认证功能,通过此功能标识用户身份。
l 上下文
根据用户拥有的权限显示相应的菜单,在具体菜单对应的模块里根据用户的权限显示相应权限的按钮。
l 问题
由于菜单或者按钮都是通过触发链接或命令的方式来实现其功能,那么在权限系统中需要做到的即可通过判断用户是否具有执行此链接或命令的权限来实现对于菜单和按钮的显示的控制。
这样带来的问题就是如何判断用户是否拥有执行某链接或命令的权限以及如何根据此结果去隐藏菜单和按钮的显示。
l 解决方案
提供校验用户是否拥有执行某链接和命令的权限的功能。
提供控制菜单、按钮显示的功能。
l 上下文
显示当前用户可访问的相应的资源,有两种情况,一种是全部显示,一种是分页显示。
l 问题
如何判断用户可访问哪些资源,资源如何进行分页处理。
l 解决方案
提供获取用户权限范围内的资源的功能,并提供全部获取和分页获取两种方式。
l 上下文
简便的授权方式。
l 问题
为提升用户授权的简便性,将权限授予给角色或组,用户只需要属于这个角色或组即可拥有相应的权限。
如何建立满足需求的授权模型。
l 解决方案
根据需求建立相应的授权模型。
根据对需求的分析,可以得出权限系统需要做到如下的功能:
l 用户身份认证。
l 校验用户是否拥有执行某链接和命令的权限的功能。
l 控制菜单、按钮显示的功能。
l 获取用户权限范围内的资源的功能,并提供全部获取和分页获取两种方式。
l 建立相应的授权模型。
在非功能性需求方面权限系统需要考虑如下几个方面:
l 权限的继承。
l 权限的排斥和包含。
l 高性能。
l 安全性。
l 系统数据的权限的继承。
l 系统数据的多种授权对象的支持。
根据这些对权限系统的功能需求和非功能性需求,我们可以合并和归纳成如下的一个表格作为对权限系统的需求:
功能点
|
描述
|
身份认证
|
提供用户身份认证的功能,以标识用户是否登录、是否为管理员等身份。
|
资源权限校验
|
判断操作主体是否具有对某资源进行某操作的权限。
|
数据权限校验
|
获取用户权限范围内的数据的功能,并提供全部获取和分页获取两种方式。
系统数据的权限的继承。
系统数据的多种授权对象的支持。
|
授权模型
|
系统权限的授予模型决定了权限系统使用的易用与否。
权限的继承。
权限的排斥和包含。
|
权限校验的体现
|
控制菜单、按钮的显示。
|
高性能
|
高效的授权与高效的权限校验。
|
安全性
|
防止非法途径对于系统受保护资源的访问或操作。
|
相关推荐
资源权限管理需要对资源的权限进行管理,包括资源的访问控制和权限分配。 四、树形菜单的设计和实现 树形菜单是权限系统中的一个重要组件,需要对树形菜单的设计和实现进行讨论。在本文中,我们将讨论基于Oracle...
《漫谈求生之路的AI系统》 在游戏开发领域,人工智能(AI)系统的应用日益广泛,尤其是在生存类游戏中,如《求生之路》系列。本文将深入探讨该系列游戏中的AI系统,揭示其如何为玩家带来逼真的游戏体验。 首先,...
《信号与系统》是一门重要的工科电子类专业课程,主要研究信号的处理以及系统对信号的响应。在这篇文章中,作者用故事性的叙述方式,通俗易懂地解释了卷积、傅利叶变换以及拉普拉斯变换等信号处理中核心的概念,使得...
这种基于数据库的权限系统设计提供了良好的扩展性,可以根据业务需求调整角色、用户、菜单和权限的关系。同时,通过优化表结构和查询语句,可以有效地处理复杂的菜单树和权限判断,为系统的安全性和用户体验打下了...
漫谈兼容内核之一:ReactOS怎样实现系统调用 漫谈兼容内核之二:关于kernel-win32的对象管理 漫谈兼容内核之三:Kernel-win32的文件操作 漫谈兼容内核之四:Kernel-win32的进程管理 漫谈兼容内核之五:Kernel-win32...
01.漫谈兼容内核之一:Wine的系统结构.pdf 02.漫谈兼容内核之二:关于kernel-win32的对象管理.pdf 03.漫谈兼容内核之三:关于kernel-win32的文件操作.pdf 04.漫谈兼容内核之四:Kernel-win32的进程管理.pdf 05.漫谈...
Kernel-win32的系统调用机制.pdf 漫谈兼容内核之六:二进制映像的类型识别.pdf 漫谈兼容内核之七:Wine的二进制映像装入和启动.pdf 漫谈兼容内核之八:ELF映像的装入_一_.pdf 漫谈兼容内核之九:ELF映像的装入_二_....
整理了王概凯的关于架构的系列文章; 文章列表如下: 架构漫谈(一):什么是架构? 架构漫谈(二):认识概念是理解架构的基础 架构漫谈(三):如何做好架构之识别问题...架构漫谈(九):理清技术、业务和架构的关系
漫谈兼容内核之一:ReactOS怎样实现系统调用 漫谈兼容内核之二:关于kernel-win32的对象管理 漫谈兼容内核之三:Kernel-win32的文件操作 漫谈兼容内核之四:Kernel-win32的进程管理 漫谈兼容内核之五:Kernel-win32...
漫谈兼容内核之十:Windows的进程创建和映像装入》这篇文档详细介绍了Windows操作系统中进程创建和映像装载的过程。通过对这一过程的理解,不仅可以帮助开发者更好地编写多进程或多线程的应用程序,还能提高对操作...
### 漫谈Wine之一:Wine的系统结构 #### 一、Wine简介及研究背景 **Wine**(Wine Is Not an Emulator)是一个兼容层,旨在允许在类Unix系统(如Linux)上运行Microsoft Windows应用程序。本文档主要探讨Wine的核心...
漫谈文化系统中的艺术.pptx
相比之下,Windows内核是微软公司开发的专有操作系统内核,主要应用于Windows系列操作系统。Windows内核的特点包括: 1. **微内核架构**:Windows内核最初基于微内核设计,但随着时间发展,许多核心服务已移入内核...
泰勒级数是基于无限级数的概念发展而来的一种数学工具,其主要目的是将复杂的函数表达为一系列简单多项式的组合,从而使得对这些函数的分析、计算和近似变得更为简便。正如文章中所提到的,通过将复杂问题转化为通用...
总结来说,“漫谈兼容内核之二十二 Windows 线程的调度和运行”涵盖了Windows操作系统中线程的创建、调度策略、执行过程和资源管理等方面的知识。理解这些概念对于优化应用程序性能、编写高效的多线程代码以及调试...
### 知识点一:全新系统架构概述 在《系统架构漫谈》的演示文稿中,主要讨论了“全新系统架构—基于中台和容器”的设计理念与实践方法。这一架构旨在通过高度集成且松散耦合的方式提高系统的灵活性、可扩展性和性能...
《旅客行程智能推荐系统架构漫谈》探讨的主题是构建一个智能的旅客行程推荐系统,该系统旨在为用户提供最佳的旅行方案。系统的核心算法包括迪杰斯特拉算法和协同过滤算法,前者用于寻找最短路径,后者则用于理解用户...
《漫谈兼容内核》是一系列深入探讨操作系统内核兼容性的技术文章集合,主要围绕Windows内核和跨平台兼容性展开。以下将针对压缩包中的各个文件内容进行详细阐述: 1. **Windows的进程间通信(IPC)** Windows的...