【转】权限设计思路

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

在我的权限系统中主要有这几个类或者接口: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配置文件中就行了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值