我正在使用基于表单的身份验证(使用JDBC-realm)来验证EE应用程序中的用户。我创建了一个/home/*
部分,只有在用户处于USER或ADMIN角色时才能访问该部分。
一切都运行正常,但问题是当我使用FacesContext.getCurrentInstance().getExternalContext().isUserInRole(role)
- Method(例如判断某些UI组件是否显示在gui上)时,返回值始终为false。
我完全不知道为什么该方法总是返回false。我错过了什么?
最令人困惑的是,我在另一个项目中(在同一个glassfish-server-instance上)实现了完全相同的行为,并在那里工作。
答案 0 :(得分:1)
我刚发现问题:我忘了添加@DeclareRoles()
注释。
您必须声明要在应用程序中的某个位置使用的角色。例如,我使用SingletonEJB,其中我声明了我正在使用的角色(使用DeclareRoles-Annotation)。
示例:
@Singleton
@LocalBean
@DeclareRoles({ "ADMIN", "USER" })
public class Application {
}