任何一款框架都應(yīng)該有自己的菜單和權(quán)限管理策略,LML本來是沒有的,后來借鑒了一下就有了。LML毫不保留的借鑒了公司正在使用的Castle.MonoRail框架的菜單和權(quán)限管理策略,以及權(quán)限審核策略,務(wù)求山寨的完美。由于本人能力有限,再者本人實際情況下并沒有閱讀過Castle.MonoRail的源碼,所以粗糙之處敬請原諒,以后還定會加以改正和改進(jìn)。
菜單即鏈接,LML中每一個Action中的任何一個方法都可以成為一個菜單,實際情況下我們從沒有把一個沒有返回視圖的方法作為一個菜單,但是它可能對應(yīng)一個權(quán)限。
權(quán)限并不是鏈接,但是訪問鏈接,即使是通過菜單訪問鏈接,都可能需要通過權(quán)限審核。鏈接和權(quán)限也有著莫大的關(guān)聯(lián)。
雖然我可能解釋的很粗糙,但是大家肯定能理解一下這樣的關(guān)系:
1, 一個菜單就是有一個鏈接。
2, 一個鏈接的訪問可能需要通過權(quán)限的審核,即一個鏈接(可能是菜單)可以對應(yīng)一個權(quán)限。
還需要注意這樣一點:
3, LML中權(quán)限并不會單獨存在,它依托于一個菜單而展現(xiàn)存在。原因是:在我們這樣的模塊開發(fā)中,基本上一個Action類就對應(yīng)一個模塊,一個模塊其實相當(dāng)于一個菜單,在這個Action類中出現(xiàn)的所有權(quán)限,都讓它歸屬于這一個大菜單,便與收集和管理。LML的菜單權(quán)限策略借鑒Castle.MonoRail,理解起來有些問題,請原諒。
使用LML的菜單和權(quán)限管理策略需要4步:
1, 配置菜單和權(quán)限初始化Bean,代碼如下:
權(quán)限初始化Bean
<bean id=“InitMenuPower”
class=“LML.Core.System.InitMenuPower”><property name=“packages”
value=“LML.Action.System,LML.Action.Article”/>
</bean>
初始化參數(shù)是需要初始化菜單和權(quán)限的包名,多個請使用英文逗號隔開。
2, 為Action配置定義權(quán)限攔截器,代碼如下:
自定義權(quán)限攔截器
<interceptors><interceptor name=“power” class=“LML.Core.System.PowerInterceptor”></interceptor>
<interceptor-stack name=“baseStack”>
<interceptor-ref name=“defaultStack”></interceptor-ref>
<interceptor-ref name=“power”></interceptor-ref>
</interceptor-stack>
</interceptors>
3, 為方法(鏈接)定義菜單和權(quán)限,LML中使用注解來定義,代碼如下:
使用注解定義菜單和權(quán)限
@SysMenu(MenuId = “System”, MenuName = “系統(tǒng)管理”, MenuPic = “sys.png”, MenuParent = “”, MenuLevel = 1, MenuSort = 1)
@SysPower(PowerId = “SystemPower”, PowerMenu = “System”, PowerName = “系統(tǒng)管理查看”)
public void System()
{
}
Sysmenu各個參數(shù)的意義分別為:菜單ID,菜單名稱,菜單圖片,上級菜單ID,菜單層級,菜單排序。
Syspower各個參數(shù)的意義分別為:權(quán)限ID,所屬菜單ID,權(quán)限名稱。
4, 初始化。
初始化操作:收集系統(tǒng)中如第三步驟定義的菜單和權(quán)限,插入數(shù)據(jù)庫永久保存。毫無疑問,數(shù)據(jù)庫結(jié)構(gòu)需要自行設(shè)計。
以上四個步驟做完了,系統(tǒng)將能夠自動化收集菜單和權(quán)限,并能夠進(jìn)行管理。
下一集我們會說到初始化操作。
經(jīng)過以上簡單介紹,想必大家都知道在LML如何簡單的使用菜單和權(quán)限了,我覺得就算是讓你自行設(shè)計開發(fā)一套類似的菜單和權(quán)限管理策略,也是小零食一袋了。我一直對LML的要求就是足夠簡單,對于菜單和權(quán)限也不例外。沒有很復(fù)雜的概念,也沒有很復(fù)雜的語法,通過以上步驟就可以就使一個業(yè)務(wù)系統(tǒng)納入較為靈活的菜單和權(quán)限管理。
當(dāng)然了,這并不是完美的,必定簡單的策略做不了太復(fù)雜的事情。獻(xiàn)丑了。
您正在看的文章來自瘋狂軟件教育中心 www.fkjava.org
信息咨詢:Q564205990 星老師