`
yzgfbj
  • 浏览: 78461 次
  • 来自: ...
社区版块
存档分类
最新评论

【转】权限设计思路

阅读更多
我这两天在做会员系统的设计,我将权限部分从会员系统中独立出来,成为一个独立的系统。会员系统完成用户管理和身份认证,权限系统完成权授权管理和权限验证。

在我的权限系统中主要有这几个类或者接口:SecureFactory,SecureManager,SecureObject,SecureModule和Privilege。

SecureFactory:工厂类,负责构造SecureManager的实例。之所以这样做是想让SecureManager支持本地和远程两种调用方式,不同的调用方式用不同的SecureManager实现支持,比如EJBSecureManager。

SecureManager:权限系统对外的统一接口,提供grant,revoke,和权限查询的方法,采用接口设计。

SecureObject:授权的对象或者可进行权限判断的对象,采用接口设计。User,Group,Role或者组织机构,文件,URL资源等都是SecureObject。SecureManager在进行权限县官操作的时候只接受SecureObject对象。

SecureModule:权限判断逻辑的抽象,采用接口设计,提供gant和权限查询的方法.如上所述,权限系统中可以进行权限验证或者可授权的对象有很多种,不同的授权对象进行权限判断的时候都有自己的逻辑,因此要让权限系统尽可能满足这些要求,有足够的扩展性,我将这部分逻辑抽象出来。

Privilege:权限

这些类是怎样协作的呢?以一个基于角色认证的权限判断为例子,我是这样做的:
1。开发一个RoleSecureObject,让这个RoleScureObject可以接受角色对象

2。开发一个RoleSecureModule,完成具体的权限判断和权限查询的方法

3。在xml配置文件中进行配置。
申明RoleSecureObject,并设置这个SecureObject的module为RoleSecureModule

4。具体的判断代码:

SecureManager sm = SecureManager.getInstance();
sm.grant(new RoleSecureObject("Administrator"),"usermanager/add");

sm.hasPrivilege(new RoleSecureObject("Administrator"),"usermanager/add");
//或者
sm.hasPrivilege(new UserSecureObject("dev"),"usermanager/add");


如果是要对其他资源进行授权和权限判断只需要开发新的SecureObject和SecureModule并添加在xml配置文件中就行了。
分享到:
评论

相关推荐

    权限系统设计思路与设计方案

    本文主要探讨基于用户、角色、权限的设计思路,并提供一种实现方案。 首先,理解基本概念: 1. **权限**:权限定义了用户对特定功能或资源的操作能力,如查看页面、调用业务逻辑、增删改查等。权限可以进一步细分...

    银行向对象存储架构转型升级的思路和最佳实践.docx

    2. 设计合理的存储策略:根据数据访问频率和重要性,设置不同的存储层级,优化成本效益。 3. 强化安全管理:建立完善的数据安全体系,包括数据加密、访问控制、审计跟踪等。 4. 持续评估与优化:实施转型后,定期...

    微内核过程引擎的设计思路和构架

    ### 微内核过程引擎的设计思路和构架 随着企业对于流程灵活性的需求日益增长,能够支持“流程可定制、可更改、可运行”的系统变得至关重要。这种趋势与面向服务架构(SOA)的发展相辅相成,后者为企业提供了提高业务...

    新闻发布系统设计思路(Dao与service)

    这里我们将深入探讨这两个组件的设计思路。 首先,Dao层是系统与数据库交互的接口,它负责执行SQL查询、更新、插入和删除操作。Dao的主要任务是将数据对象(如新闻实体类)转换为数据库中的记录,并将数据库中的...

    医疗大数据平台设计思路.pdf

    访问控制:设置权限管理,防止未授权访问。数据质量:通过数据清洗和验证,提高数据的准确性。元数据管理:记录数据来源、含义和生命周期,方便数据治理。审计日志:记录数据操作历史,用于追踪和审计。 医疗大数据...

    php后台多用户权限组思路与实现程序代码分享

    9. **扩展性**:设计权限系统时要考虑到未来可能增加的新功能或权限,应保持代码的模块化和可扩展性,方便后期维护和升级。 通过以上这些技术点,我们可以构建一个灵活且安全的PHP后台多用户权限管理系统,确保每个...

    大数据平台常用组件-常见的大数据平台架构设计思路.pdf

    本文深入探讨了大数据平台的常见组件、架构设计思路,以及如何解决数据开发过程中的痛点。 首先,大数据技术栈包含了多个复杂的模块,如数据采集(如Flume、Kafka)、数据传输(如HDFS、Spark)、实时计算(如Flink...

    建筑企业物联网平台的建设规划与思路.pdf

    随着物联网技术在建筑业中的应用愈发广泛,物联网平台作为其核心部分,其建设规划和思路也变得日益重要。以下是关于建筑企业物联网平台建设规划与思路的知识点详解: 一、物联网技术在建筑业的应用现状 物联网技术...

    企业内部报表生成思路

    【企业内部报表生成思路】 在企业运营中,报表系统是不可或缺的一部分,它为企业决策者提供了数据支持和业务洞察。报表的生成通常涉及到数据采集、处理、分析和展示等多个环节。以下是一个详细的报表生成思路,结合...

    一种基于树型结构的BS系统权限控制方法

    用户权限数据包的设计思路是将复杂的权限管理转化为简单易懂的数据包交换,简化了权限的授予和撤销流程。 #### 2.3 实践应用 该权限控制方法在实际的系统开发中得到了验证,证明了其有效性与灵活性。通过系统资源...

    Java Web通用用户权限管理框架设计与实现.pdf

    【Java Web通用用户权限管理框架设计...该框架的设计思路和实现方法对于理解和构建类似的系统具有重要的参考价值。通过实际应用,不仅可以提升系统的安全性,还能提高开发效率,降低维护成本,适应各种复杂的业务场景。

    Android应用程序开发以及背后的设计思想深度剖析

    1. **AndroidManifest.xml**:这是应用程序的核心配置文件,包含应用的元数据,如应用名称、作者、功能声明以及所需的权限。尽管在 APK 中是以二进制形式存在,但它包含了应用程序的全局信息。 2. **classes.dex**...

    文档在线预览实现方法思路

    本篇将详细阐述实现文档在线预览的方法和思路,尤其关注C#环境下的开发实践。 一、基础原理 文档在线预览的核心在于将本地或远程的文档内容转化为可以在浏览器中展示的格式。通常,有两种主要的实现方式: 1. **...

    Android 应用提供SDK Jar包给第三方使用 (设计思路 以及实现步骤)

    大体的设计思路分为三个步骤 第一: 服务端 作为服务端 我们需要建立自己的aidl 以及实现类 方便第三方调用的时候 将服务端代理的句柄传给SDK 第二: SDK作为服务端和客户端的中间代理,可以直接拿到服务代理对象进行...

    基于PHPWIND插件的体会及编写思路.pdf

    从给定的文件信息来看,虽然标题和描述都聚焦于基于PHPWIND插件的体会及编写思路,但部分内容却转向了对Spring-Portlet的体验分享和开发思路,涉及了Portlet的基本概念、Spring与Portlet的差异,以及如何在Portlet中...

    通信行业数字化转型数据架构设计方法论及典型案例.pptx

    - **数据模型设计思路**: - 实体关系模型:根据业务需求抽象出实体及其关系。 - 维度建模:针对分析型业务场景采用星型或雪花模型提高效率。 - 数据分层:将数据划分为不同层次进行管理。 - 数据标准化:制定...

    有线电视网企档案信息化建设思路与框架分析.docx

    - **权限控制**:通过权限管理和访问控制机制,保证电子文件的真实性和完整性。 #### 四、电子图档系统的构建与应用 构建完善的电子图档系统是实现档案信息化的重要步骤之一。该系统应当结合有线电视网络企业的...

    粮食收购转卖系统易语言源码

    《粮食收购转卖系统易语言源码解析与探讨》 在信息技术日新月异的今天,各类管理系统已经深入到各行各业的日常运营...通过深入研究和理解,我们不仅能了解一个完整系统的设计思路,还能为今后的开发工作积累宝贵经验。

    Android本地音乐播放器的设计与实现.pdf

    该应用程序的设计思路是基于Android客户端应用开发的需求和实现过程。该应用程序的主要功能包括获取本地音乐文件、播放音乐、暂停音乐、停止音乐、音乐列表控制等。同时,该应用程序还提供了定时暂停功能,以满足...

Global site tag (gtag.js) - Google Analytics