一. 开源产品
对开源的产品了解不多,所以也只能大概的谈谈,开源的产品中比较知名的有poweracl、acegi,poweracl从名字就可以看出其是基于ACL模型的,不怎么了解所以在此也不去评价了。
Acegi作为JAVA界知名的权限系统,从其文档看来是能满足上述的权限系统的所有需求,其reference文档也对权限系统进行了系统的归纳,非常的不错,建议去看看。
在Acegi中授权模型以及资源权限的校验仍然是基于RBAC模型,在数据权限方面也就是在reference文档中它称为Domain Object Instance的部分,是基于ACL模型的实现,曾经翻阅它此部分的代码,根据代码表现它并不支持Domain Object Instance的权限的继承,并且对于获取的Domain Object Instance也是没法采用分页的方式获取。
看了Acegi的代码觉得其授权应该是比较高效的,但在校验权限上效率恐怕也会比较的低,因为权限的继承是在校验权限通过递规来实现的,虽然引入了缓存机制但仍然无法从根本上解决此问题,而且此缓存的维护也不是一件容易的事。
但Acegi的优点也不可忽略,作为权限系统有一个很容易产生的问题就是对原有系统产生非常大的侵入,并最终导致原有系统与此权限系统形成了非常强的耦合,Acegi在这点上则做的比较好,通过使用Filter、Interceptor以及AOP Weaver技术来尽量保证对原有系统最少的改动。
二. 个人观点
权限系统作为各种系统中都需要的一个子系统,具有很广的需求面,无论做什么系统,首要重要的仍然是需求,尽管权限系统在各个系统中都有需求,但仍然是不尽相同,所以首先要明确所面对的系统到底是一个什么样的系统,对于权限有什么样的需求,根据需求可以根据相应的实现方案来做出自己的设计。
权限系统主要由授权和校验权限两大部分组成,授权效率和校验权限的效率通常会产生冲突,个人觉得首先要保证校验权限的效率,毕竟系统需要校验权限的地方会非常的多,但授权动作相对来讲触发的会比较的少。
从技术需求上来讲,权限系统对外部系统而言最好做到黑盒的效果,为了减少对外部系统的侵入,在根据业务需求分析的基础上形成权限系统的输入和输出需求,从通常的功能需求角度来大致的阐述:
1. 身份认证
在B/S结构的系统中通常通过增加Filter来达到实现身份认证的功能,这样不会造成对原有系统的改动。
2. 授权模型
授权模型则需外部系统根据此模型建立相应的授权UI以及交互,当然,权限系统本身也可提供默认的实现方式。
3. 资源权限校验
在资源权限的校验上可通过Proxy或Before Interceptor的方式来做到对资源操作的权限控制。
4. 数据权限校验
在很多时候需要区分好数据权限和业务逻辑,不要将业务逻辑形式的数据控制也借用数据权限来实现,数据权限的引入很容易对现有的系统模块造成影响,在此块的设计上要特别注意避免造成对原有系统模块过多的侵入。
5. 权限校验的体现
在权限校验的体现上基本主要是表现在菜单、按钮以及数据的显示上,菜单、按钮通常通过标签的方式来控制,数据的显示控制则需结合数据权限校验部分来实现。
到现在为止也做了几个权限系统了,目前仍然没做出让自己满意的权限系统,此文作为抛砖引玉的文章,也希望大家能够给出自己所做的解决方案。
三. 涉及的知识体系
根据上面的描述以及结合自己的经验,形成搭建权限系统所需的知识体系:
图表 6 权限系统知识体系
相关推荐
总体来说,这篇文章通过生动有趣的例子和故事,将《信号与系统》中的核心概念进行了深入浅出的讲解,使读者能够在轻松愉快的阅读过程中理解和掌握复杂的信号处理知识。作者用这样一种方式,让工科专业的学生能够以更...
《漫谈求生之路的AI系统》 在游戏开发领域,人工智能(AI)系统的应用日益广泛,尤其是在生存类游戏中,如《求生之路》系列。本文将深入探讨该系列游戏中的AI系统,揭示其如何为玩家带来逼真的游戏体验。 首先,...
漫谈CRM体系化建设.pdf
01.漫谈兼容内核之一:Wine的系统结构.pdf 02.漫谈兼容内核之二:关于kernel-win32的对象管理.pdf 03.漫谈兼容内核之三:关于kernel-win32的文件操作.pdf 04.漫谈兼容内核之四:Kernel-win32的进程管理.pdf 05.漫谈...
基于数据库的权限系统设计 本文将详细介绍基于数据库的权限系统设计,包括权限系统的基本概念、数据库设计、权限管理系统的设计思路等。 一、权限系统概述 权限系统是指对系统的访问和操作进行控制和管理,以确保...
漫谈兼容内核之一:ReactOS怎样实现系统调用 漫谈兼容内核之二:关于kernel-win32的对象管理 漫谈兼容内核之三:Kernel-win32的文件操作 漫谈兼容内核之四:Kernel-win32的进程管理 漫谈兼容内核之五:Kernel-win32...
谈兼容内核之一:ReactOS怎样实现系统调用.pdf 漫谈兼容内核之二:关于kernel -win32的对象管理.pdf 漫谈兼容内核之三:关于kernel-win32的文件操作.pdf 漫谈兼容内核之四:Kernel-win32的进程管理.pdf 漫谈兼容内核...
在通向架构师的道路中,设计基于数据库的权限系统是一个重要的环节。权限系统设计旨在确保系统的安全性和用户访问控制的灵活性。在这个话题中,我们将探讨如何满足特定的需求,并通过数据库表设计实现一个基础的权限...
Java 反射机制安全漫谈 Java 反射机制是 Java 语言中的一种强大功能,允许程序在运行时访问和修改类的信息。然而,这种功能也引入了安全隐患。本文将讨论 Java 反射机制的安全问题,重点介绍反射机制的基本概念、...
漫谈兼容内核之一:ReactOS怎样实现系统调用 漫谈兼容内核之二:关于kernel-win32的对象管理 漫谈兼容内核之三:Kernel-win32的文件操作 漫谈兼容内核之四:Kernel-win32的进程管理 漫谈兼容内核之五:Kernel-win32...
net 4.0面向对象编程漫谈 基础篇
在首篇文章《漫谈高数(一)泰勒级数的物理意义》中,作者巧妙地将复杂的数学原理与直观的物理意义相结合,使读者能够更加深刻地理解泰勒级数这一高等数学的重要组成部分。 ### 泰勒级数的本质与应用 #### 泰勒级数...
本篇文章是《漫谈CRM体系化建设》系列文章的第五篇,也是最后一篇。该系列文章旨在深入探讨企业客户管理的关键问题,如客户开发、留存和服务等,并最终落脚于CRM体系化解决方案的设计与实施。 #### 二、标准CRM应用...
总的来说,“漫谈兼容内核”是一个深度探讨操作系统底层机制和跨平台兼容性的主题,涵盖了从进程调度到系统调用接口的广泛知识。理解这些概念和技术对于操作系统开发者、系统管理员以及对计算机系统有深入兴趣的人员...
漫谈文化系统中的艺术.pptx
《漫谈兼容内核》是一本深入探讨操作系统内核,特别是Linux与Windows内核之间差异与共性的电子书籍。此书对于理解这两种广泛使用的操作系统核心的运作机制具有极高的价值。通过对内核的剖析,我们可以了解到操作系统...
总结来说,“漫谈兼容内核之二十二 Windows 线程的调度和运行”涵盖了Windows操作系统中线程的创建、调度策略、执行过程和资源管理等方面的知识。理解这些概念对于优化应用程序性能、编写高效的多线程代码以及调试...
### 漫谈Wine之一:Wine的系统结构 #### 一、Wine简介及研究背景 **Wine**(Wine Is Not an Emulator)是一个兼容层,旨在允许在类Unix系统(如Linux)上运行Microsoft Windows应用程序。本文档主要探讨Wine的核心...