permissionsadapter
介面,在選單框架中定義可插入的介面卡,該介面卡原來校驗對選單的訪問。介面中只有乙個方法:
public booleanisallowed(
menucomponent
menu)
,引數是
menu-config.xml
檔案中定義的乙個選單(
menu
)或選單項(
item
),該方法判斷該選單是否允許被顯示。
在顯示選單的時候,每個選單或選單項都要作為引數呼叫isallowed
方法,如果返回
true
就顯示該選單,否則就不顯示選單。
struts-menu
專案中內建有類rolespermissionsadapter
實現了permissionsadapter
介面。該介面卡在容器管理安全性是被用來進行選單訪問的驗證,將
web.xml
檔案中定義的使用者安全角色對映到
menu-config.xml
檔案中設定的選單
/選單項允許訪問角色列表
。其中的角色是在。
該步驟通常是
j2ee/jaas
等安全配置的一部分。為每個使用者或使用者組分配角色。角色是在
web.xml
檔案中定義的。
用來顯示選單的
jsp標記
標記中有乙個可選的屬性:
permissions
。如果設定了該屬性,該屬性值就作為名字,在
域內查詢
permissionsadapter
的物件。然後將找到的介面卡應用到選單的顯示中。
值得注意的是,在
permissions
的屬性值中有乙個值是特殊處理的――
rolesadapter
。如果設定了
permissions="rolesadapter"
,就說明在驗證選單是否顯示的過程中,不是在
域中查詢介面卡,而是建立並使用新的
rolespermissionsadapter
物件。這樣就只需要在
標記中新增屬性
permissions="rolesadapter"
,而無需定義自己的
permissionsadapter
實現。在
menu-config.xml
檔案中的
和標記有乙個可選的屬性:
roles
。該屬性在與
rolespermissionsadapter
聯合使用的時候,其值是所有可以看到該選單
/選單項的角色列表,角色之間以空格分隔。
rolespermissionsadapter
物件會根據空格從角色列表中取得各個角色,並為每個角色呼叫
request.isuserinrole()
方法。對於呼叫返回
true
的角色,就顯示對應的選單
/選單項。
例如,在
menu-config.xml
檔案中配置如下:
page="modprefs.do" roles="moderator system"/>
page="siteprefs.do" roles="system"/>
說明:任何
user
角色的使用者都能夠看到該選單,也就是自動看到
user preferences
選單項。只有
moderator
和system
角色的使用者才能看到
moderator preferences
選單項。而只有
system
角色的使用者才能夠看到
site preferences
選單項。
當然,使用者看不到不等於沒有許可權訪問,使用者可以直接輸入連線進行訪問。因此要避免非法訪問,還要進行必要的安全措施。
name="permissions" title="permissions" roles="tomcat,role1">
roles
屬性給出了兩個能夠看到該選單的角色:
tomcat,role1
bundle=".apache.struts.action.message"
permissions="rolesadapter">
給出permissions
屬性,表示顯示的選單要進行角色的驗證
基於角色的許可權控制
asp forums中基於角色的許可權控制 asp.頁面如何控制頁面依據不同使用者許可權有不可見 可見 編輯 三種操作許可權 做過許可權管理和想做許可權管理的人進來 附我的思路 懇求許可權分配的例子 高分求使用者許可權管理 c 或演算法 請問在 artclient應用中,如何做到科學的身份驗證和許可...
基於角色的許可權設計
基於角色的許可權設計 一 在任何系統中,許可權設計是最基礎的東西,本文給出乙個基於角色的許可權設計的循序漸進的設計方案。在許可權系統中,功能 許可權 是最小的單位,比如起草新聞 編輯新聞 審核新聞 刪除新聞等,而角色是一類功能的集合,比如新聞編輯這個角色,他可能有起草新聞 編輯新聞等功能集合,而責任...
基於角色的許可權設計
在任何系統中,許可權設計是最基礎的東西,本文給出乙個基於角色的許可權設計的循序漸進的設計方案。在許可權系統中,功能 許可權 是最小的單位,比如起草新聞 編輯新聞 審核新聞 刪除新聞等,而角色是一類功能的集合,比如新聞編輯這個角色,他可能有起草新聞 編輯新聞等功能集合,而責任編輯他可能就有更多的許可權...