Opera9.1新增反釣魚攻擊技術可實時提醒IE出現(xiàn)未修補漏洞 用戶應提高安全級別病毒:“尼拉葛”“Worm/Delf”兩變種西門子新款上市報價聯(lián)想服務器助烏市實現(xiàn)環(huán)境管理信息化五大步驟讓虛擬化在應用中“落實”ChinaITLab收集整理
2005-8-25
保存本文推薦給好友收藏本站整理您的相片。下載 Google 的相片軟件1.struts-menu Permissions
1.1. 背景
PermissionsAdapter接口,在菜單框架中定義可插入的適配器,該適配器原來校驗對菜單的訪問。接口中只有一個方法:public boolean isAllowed(MenuComponent menu),參數(shù)是menu-config.xml文件中定義的一個菜單(Menu)或菜單項(Item),該方法判斷該菜單是否允許被顯示。
在顯示菜單的時候,每個菜單或菜單項都要作為參數(shù)調用isAllowed方法,如果返回true就顯示該菜單,否則就不顯示菜單。
Struts-menu項目中內置有類RolesPermissionsAdapter實現(xiàn)了PermissionsAdapter接口。該適配器在容器管理安全性是被用來進行菜單訪問的驗證,將web.xml文件中定義的用戶安全角色映射到menu-config.xml文件中設置的菜單/菜單項允許訪問角色列表。其中的角色是在。
1.2. 步驟0
該步驟通常是J2EE/JAAS等安全配置的一部分。為每個用戶或用戶組分配角色。角色是在web.xml文件中定義的。
1.3. 步驟1:為菜單定義PermissionsAdapter
用來顯示菜單的JSP標記<menu:useMenuDisplayer/>標記中有一個可選的屬性:permissions。如果設置了該屬性,該屬性值就作為名字,在application/request/session/page域內查找PermissionsAdapter的對象。然后將找到的適配器應用到菜單的顯示中。
值得注意的是,在permissions的屬性值中有一個值是特殊處理的――rolesAdapter。如果設置了permissions="rolesAdapter",就說明在驗證菜單是否顯示的過程中,不是在application/request/session/page域中查找適配器,而是創(chuàng)建并使用新的RolesPermissionsAdapter對象。這樣就只需要在<menu:useMenuDisplayer/>標記中添加屬性permissions="rolesAdapter",而無需定義自己的PermissionsAdapter實現(xiàn)。
1.4. 步驟2:將角色映射到menu-config.xml中的菜單/菜單項
在menu-config.xml文件中的<Menu/>和<Item/>標記有一個可選的屬性:roles。該屬性在與RolesPermissionsAdapter聯(lián)合使用的時候,其值是所有可以看到該菜單/菜單項的角色列表,角色之間以空格分隔。
RolesPermissionsAdapter對象會根據(jù)空格從角色列表中取得各個角色,并為每個角色調用request.isUserInRole()方法。對于調用返回true的角色,就顯示對應的菜單/菜單項。
例如,在menu-config.xml文件中配置如下:
<Menu name="PrefsMenu" title="Preferences" roles="User">
<Item name="UserPrefs" title="User Preferences" page="prefs.do"/>
<Item name="ModPrefs" title="Moderator Preferences"
page="modPrefs.do" roles="Moderator System"/>
<Item name="AdminPrefs" title="Site Preferences"
page="sitePrefs.do" roles="System"/>
</Menu>
說明:任何User角色的用戶都能夠看到該菜單,也就是自動看到User Preferences菜單項。只有Moderator和System角色的用戶才能看到Moderator Preferences菜單項。而只有System角色的用戶才能夠看到Site Preferences菜單項。
當然,用戶看不到不等于沒有權限訪問,用戶可以直接輸入連接進行訪問。因此要避免非法訪問,還要進行必要的安全措施。
1.5. 示例(rolesMenu.jsp)
1.5.1. menu-struts.xml文件中
<Menu name="Permissions" title="Permissions" roles="tomcat,role1">
<Item title="Change" location="permissionsForm.jsp"/>
</Menu>
roles屬性給出了兩個能夠看到該菜單的角色:tomcat,role1
1.5.2. JSP頁面中
<menu:useMenuDisplayer name="ListMenu"
bundle="org.apache.struts.action.MESSAGE"
permissions="rolesAdapter">
<menu:displayMenu name="ToDoListMenuFile"/>
<menu:displayMenu name="ToDoListMenuEdit"/>
<menu:displayMenu name="Permissions"/>
</menu:useMenuDisplayer>