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