2012-11-26 22 views
1

我正在使用基於表單的身份驗證(使用JDBC領域)來驗證我的EE應用程序中的用戶。我創建了一個/home/*部分,該部分僅在用戶處於USER或ADMIN角色時纔可訪問。Java EE 6表單身份驗證和FacesContext.isUserInRole

一切工作正常,但問題是,當我使用FacesContext.getCurrentInstance().getExternalContext().isUserInRole(role) -Method(例如,以確定是否顯示某些UI組件),返回值始終爲false。

我完全不知道爲什麼該方法總是返回false。我錯過了什麼?

最容易混淆的是,我在另一個項目中實現了完全相同的行爲(在同一個glassfish-server-instance上)並且它在那裏工作。

回答

1

我剛剛發現問題:我忘了添加@DeclareRoles()註釋。

你必須聲明你想在你的應用程序的某個地方使用的角色。例如,我使用SingletonEJB來聲明我正在使用的角色(使用DeclareRoles-Annotation)。

例子:

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

如果你可以添加一點點的信息(其中該註解需要,例如),那麼其他有同樣的問題將有一個更簡單的時間解決它。 –