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

【转】权限设计思路

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

在我的权限系统中主要有这几个类或者接口: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配置文件中就行了。
分享到:
评论

相关推荐

    Spring Boot+Maven+Spring Data JPA+apache Shiro+Easyui实现通用用户权限管理系统

    设计思路源于经典的RBAC模型,即:用户通过角色操作资源。在实现上,基本实现了功能权限,包含了资源菜单的显示控制以及页面上按钮粒度的显示控制。并且附送了使用Springboot发送邮件的功能。数据库:链接:...

    美团商品系统的配置化思路:如何增强软件的动态性

    一般而言,软件的配置,包含几个层面:包括数据,功能,流程,界面,角色权限,安全等等。 从业务需求来看,第一个最基本的要求是根据类目对商品数据结构化定制,几乎每个业务都是如此。其次是对一些核心功能模块的...

    管理信息系统课程设计报告书.docx

    摘要 2 目录 3 第1章 项目说明 4 1.1 项目背景 4 1.2 问题定义 5 1.3 开发策略与方法 5 1.4 使用环境 6 1.5 设计思路 6 第2章 系统分析 7 2.1 新系统目标 7 2.2 系统可行性分析 8 2.3 系统需求分析 8 2.4 业务流程...

    基于JSP+Mysql的银行柜员业务绩效考核系统软件程序源码+数据库+word毕业设计论文文档.zip

    1.3 研究方法及设计思路 5 1.3.1 研究方法 5 1.3.2 设计思路 6 2、应用需求分析与可行性分析 6 2.1 应用需求分析 7 2.2 运行需求分析 8 2.3 其他需求分析 8 2.4 可行性分析 8 2.4.1经济可行性 8 2.4.2技术可行性 9 ...

    VB课程设计俄罗斯方块

    从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我们在设计中在一个图片框中构造了一个4*4的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我们总共设计了7中造型,...

    厂区网络视频监控系统设计方案.docx

    三、设计思路 网络视频监控系统的建设将保证厂区各个职能部门人员对职责范围许可内的视频信息情况及时、准确的了解、掌握,监控系统实现系统化、科学化、现代化地统一管理,切实满足公安行业对于图像系统的管理和...

    asp.net知识库

    Coalesys PanelBar + R.a.d Treeview +Xml 构建的Asp.net 菜单和权限管理模块 突破屏蔽限制,自己的网站使劲弹新IE窗口 对页面SCROLLING的CSS不能生效原因 .Net 中IE使用WinForm控件的使用心得。 动态加载用户控件的...

    JEECG-FRAMEWORK

    JEECG智能框架可以有效解决信息孤岛问题,生成统一代码、统一规范、统一设计思路,使你能在这个平台上,快速开发出高效高质量代码,缩短项目开发周期。 为什么选择JEECG?¶ 1.采用主流SSH2框架,容易上手; 代码...

    java设计模式选择题复习题.doc

    举出一个生活中使用装饰者模式的例子,用程序实现思路 举个生活中的例子,俗话说"人在衣着马在鞍",把这就话用装饰者模式的语境翻译一下 ,"人通过漂亮的衣服装饰后,男人变帅了,女人变漂亮了;"。对应 上面的类图...

    【推荐】最强大数据学习与最佳实践资料合集(基础+架构+数仓+治理+案例)(100份).zip

    权限管理设计方案 数据安全模板-访问权限梳理表 数据治理服务解决方案 数据治理及数据资产化创新实践-京东 万振龙:数据治理与大数据平台设计 主数据管理实践白皮书(1.0版) Apache atlas使用说明文档 atlas安装 ...

    Oracle.11g.从入门到精通 (1/2)

    15.1.4 新闻发布系统的设计思路 15.2 系统功能模块设计 15.3 数据库设计 15.3.1 数据库需求分析 15.3.2 数据库概念结构设计 15.3.3 数据库逻辑结构设计 15.3.4 数据库表的创建 15.3.5 数据库的连接 15.4 网站总体...

    Oracle.11g.从入门到精通 (2/2)

    15.1.4 新闻发布系统的设计思路 15.2 系统功能模块设计 15.3 数据库设计 15.3.1 数据库需求分析 15.3.2 数据库概念结构设计 15.3.3 数据库逻辑结构设计 15.3.4 数据库表的创建 15.3.5 数据库的连接 15.4 网站总体...

    Oracle11g从入门到精通

    15.1.4 新闻发布系统的设计思路 15.2 系统功能模块设计 15.3 数据库设计 15.3.1 数据库需求分析 15.3.2 数据库概念结构设计 15.3.3 数据库逻辑结构设计 15.3.4 数据库表的创建 15.3.5 数据库的连接 15.4 ...

    Oracle11g从入门到精通2

    15.1.4 新闻发布系统的设计思路 15.2 系统功能模块设计 15.3 数据库设计 15.3.1 数据库需求分析 15.3.2 数据库概念结构设计 15.3.3 数据库逻辑结构设计 15.3.4 数据库表的创建 15.3.5 数据库的连接 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    07 属主属组及基于数字的权限管理 第5章 01 上节课复习 02 文件合并与文件归档 03 文件归档与两种压缩方式 04 vim编辑器 05 系统启动流程 06 grub加密 07 bios加密 08 top命令 09 free命令 10 进程管理 第6章 01...

    语言程序设计课后习题答案

    结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体...

    饮食通《餐饮无线点菜系统》

    整套系统风格统一,界面整洁美观,设计思路清晰、学习培训简单,操作使用方便,有利于操作员顺利掌握、熟练使用。餐饮行业从业人员的流动性特别大,经常更换人员,新的操作员只要在相关人员的指导下,几个小时内就...

    计算机网络技术专业《网络服务器系统管理设置》课程标准.docx

    (二)设计思路 1. 教学设计 根据课程内容操作性强和中职新生知识、经验均比较欠缺的特点,灵活运用案例分析、操作演示、项目实做等教学方法,引导学生积极思考、主动吸纳、勤于练习、乐于实践,提高了教和学的效果...

    android开发资料大全

    APK权限大全 - Android必懂知识 最无私的Android资料(书籍+代码)分享[总结] Android中文帮助教程(非常合适新手入门) android程序编写及调试新手入门 大家一起学Android(Windows篇) android入门与提高必看指南 ...

    CCFlow驰骋工作流引擎-.net

    8、CCFlow设计思路精巧、概念简单。只有线性、同表单分合流、异表单分合流、父子流程四个概念。 有涵盖多种行为的5*5的算法,流程模式实现现实生活中绝大多数模式(目前没有我们解决不了的问题)。 9、CCFlow的概念...

Global site tag (gtag.js) - Google Analytics