1. 用戶可以從外部的系統(tǒng)接入,模塊中的用戶只有用戶名,密碼和描述這三個(gè)最基本的系統(tǒng),然后通過ID和外部系統(tǒng)的用戶建立聯(lián)系
2. 角色之間可以繼承,可以有父角色和子角色,而且個(gè)數(shù)不限,允許多重繼承,通過繼承之后,角色可以擁有所有父角色的權(quán)限
3. 權(quán)限的劃分方式
????
??? a.權(quán)限用事件來劃分,每個(gè)事件通過一個(gè)handle來進(jìn)行處理
???
??? b.一個(gè)handle就是一個(gè)class
??? c.事件的來源是一個(gè)配置文件,因此配置文件的方式可以是這樣的
<?xml version="1.0" encoding="GBK"?>
<control>
?<!-- 是否自動(dòng)轉(zhuǎn)向 默認(rèn)為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>
?
通過解析這個(gè)配置文件,可以得到每個(gè)事件的ID,這個(gè)ID就是以后的權(quán)限標(biāo)志
給角色分配的權(quán)限就是這樣的一個(gè)一個(gè)的標(biāo)志
4.??通過AOP給應(yīng)用系統(tǒng)加入權(quán)限控制
???? 系統(tǒng)在執(zhí)行的過程中,能自動(dòng)的進(jìn)行攔截,如果發(fā)現(xiàn)當(dāng)前的class是處于配置文件中的某一個(gè)handle的時(shí)候,自動(dòng)進(jìn)行權(quán)限驗(yàn)證,分析當(dāng)前用戶所擁有的角色中是否具有執(zhí)行相關(guān)的handle的權(quán)限,在驗(yàn)證通過以后允許執(zhí)行這個(gè)handle中的操作,否則拒絕執(zhí)行
這樣做的好處就是能夠不在業(yè)務(wù)系統(tǒng)中寫入任何和權(quán)限相關(guān)的代碼,與權(quán)限相關(guān)的部分全部都是通過配置文件的配置來進(jìn)行處理的,同時(shí)實(shí)現(xiàn)了權(quán)限控制的完全組件化.
如果大家有什么好的建議歡迎一起討論