根据web.xml

时间:2017-01-31 21:49:47

标签: jsf authentication web.xml conditional-rendering security-constraint

我有自己的领域类扩展了AppservPasswordLoginModule和AppservRealm,我在数据库中从我自己的表中获取用户和角色。在web.xml中,我定义了对页面的访问权限并且它可以工作 我有一些机制可以使用@SessionScoped注释从我的bean中的menu.xml文件中读取主菜单。  我想使用web.xml中的规则来仅显示用户可以访问的项目(在web.xml中定义),而不在menu.xml文件中重复配置。 我想解决方案可能是在我在SessionScoped bean中为此页面创建菜单项时检查对页面的访问,但我不知道如何轻松检查它。  这种情况的最佳解决方案是什么?  我正在使用glassfish 4.1和jsf 2.2。

1 个答案:

答案 0 :(得分:0)

我通过以下方法解决了这个问题:

在我的ServletListener中

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

我从web.xml读取security-constraint,解析它们并将其存储在我的@ApplicationScoped bean中。

在@SessionScoped bean中,在@PostConstruct注释方法中,我将所有角色存储在@ApplicationScoped bean中并通过

检查每个人
FacesContext.getCurrentInstance().GetExternalContext().IsUserInRole(role);

方法

所以我拥有所有当前的用户角色。然后,在我的@SessionScoped bean中,对于每个菜单项,我检查此菜单项的url所代表的资源是否可用于当前用户拥有的角色。

编辑:这个解决方案的不好的一面是我只分析web.xml文件,没有注释

相关问题