Java EE 6表单身份验证和FacesContext.isUserInRole

时间:2012-11-26 14:58:04

标签: java-ee-6 facelets form-authentication

我正在使用基于表单的身份验证(使用JDBC-realm)来验证EE应用程序中的用户。我创建了一个/home/*部分,只有在用户处于USER或ADMIN角色时才能访问该部分。

一切都运行正常,但问题是当我使用FacesContext.getCurrentInstance().getExternalContext().isUserInRole(role) - Method(例如判断某些UI组件是否显示在gui上)时,返回值始终为false。

我完全不知道为什么该方法总是返回false。我错过了什么?

最令人困惑的是,我在另一个项目中(在同一个glassfish-server-instance上)实现了完全相同的行为,并在那里工作。

1 个答案:

答案 0 :(得分:1)

我刚发现问题:我忘了添加@DeclareRoles()注释。

您必须声明要在应用程序中的某个位置使用的角色。例如,我使用SingletonEJB,其中我声明了我正在使用的角色(使用DeclareRoles-Annotation)。

示例:

@Singleton
@LocalBean
@DeclareRoles({ "ADMIN", "USER" })
public class Application {
}