1. 用户可以从外部的系统接入,模块中的用户只有用户名,密码和描述这三个最基本的系统,然后通过ID和外部系统的用户建立联系
2. 角色之间可以继承,可以有父角色和子角色,而且个数不限,允许多重继承,通过继承之后,角色可以拥有所有父角色的权限
3. 权限的划分方式
a.权限用事件来划分,每个事件通过一个handle来进行处理
b.一个handle就是一个class
c.事件的来源是一个配置文件,因此配置文件的方式可以是这样的
<?xml version="1.0" encoding="GBK"?>
<control>
<!-- 是否自动转向 默认为false-->
<isforward>false</isforward>
<!-- 组件 -->
<cmp id="cmp1" name="组件一">
<!-- 事件 -->
<event id="event1" name="事件一">
<handle>com.snoics.cmp.event.Event1</handle>
<view>/url1/pagename1</view>
</event>
<event id="event2" name="事件二">
<handle>com.snoics.cmp.event.Event2</handle>
<view>/url2/pagename2</view>
</event>
</cmp>
<cmp id="cmp2" name="组件二">
<event id="event3" name="事件三">
<handle>com.snoics.cmp.event.Event3</handle>
<view>/url3/pagename3</view>
</event>
<event id="event4" name="事件四">
<handle>com.snoics.cmp.event.Event4</handle>
<view>/url4/pagename4</view>
</event>
</cmp>
</control>
通过解析这个配置文件,可以得到每个事件的ID,这个ID就是以后的权限标志
给角色分配的权限就是这样的一个一个的标志
4. 通过AOP给应用系统加入权限控制
系统在执行的过程中,能自动的进行拦截,如果发现当前的class是处于配置文件中的某一个handle的时候,自动进行权限验证,分析当前用户所拥有的角色中是否具有执行相关的handle的权限,在验证通过以后允许执行这个handle中的操作,否则拒绝执行
这样做的好处就是能够不在业务系统中写入任何和权限相关的代码,与权限相关的部分全部都是通过配置文件的配置来进行处理的,同时实现了权限控制的完全组件化.
如果大家有什么好的建议欢迎一起讨论
posted on 2006-02-16 13:11
snoics 阅读(1855)
评论(3) 编辑 收藏 所属分类:
学习 . 感悟