0

定義的用戶角色,我有自己的境界類擴展AppservPasswordLoginModule和AppservRealm,我在數據庫中獲取用戶和角色從我自己的表。在web.xml中,我定義了對頁面的訪問並且它可以工作。 我有一些機制來從我的豆與@SessionScoped註釋我menu.xml文件文件中讀取主菜單。 我想使用規則從web.xml中只顯示這個項目,其中用戶具有存取權限(在web.xml中定義),而不會在我menu.xml文件文件重複配置。 我想,解決方案可能是檢查頁面的訪問權限,當我在SessionScoped bean中爲此頁面創建菜單項時,但我不知道如何輕鬆檢查它。 這種情況的最佳解決方案是什麼? 我使用的是GlassFish 4.1和JSF 2.2。顯示的菜單項目根據在web.xml中

回答

0

我解決了這個通過下面的方法:

在我ServletListener

@WebListener 
public class implements ServletListener ServletContextListener {...} 

我從web.xml中讀取安全性約束,解析他們並將其存儲在我的@ApplicationScoped豆。

在@SessionScoped豆,在@PostConstruct標註的方法,我得到存儲在@ApplicationScoped豆的所有角色和

FacesContext.getCurrentInstance().GetExternalContext().IsUserInRole(role); 

方法檢查每一個人。

所以我目前所有的用戶角色。然後,在我的@SessionScoped豆,每個菜單項我檢查由該菜單項的URL表示的資源是否是可用於當前用戶具有角色。

編輯:這個解決方案的壞處是,我只分析web.xml文件,沒有註釋