我有一個JBoss Seam應用程序,它利用Seam的IdentityManager
和JpaIdentityStore
組件來處理用戶帳戶的創建和驗證。我的components.xml
文件設置正確,我可以使用IdentityManager
創建沒有問題的帳戶。Seam - IdentityManager.isUserEnabled問題()
我創建了一個頁面,允許我執行基本帳戶維護,例如啓用/禁用帳戶。但是,只要我撥打IdentityManager
上的isUserEnabled(String username)
方法,它總是返回false。 JpaIdentityStore
中的相應方法也返回false。即使我可以看到帳戶已在數據庫中啓用,也會發生這兩種情況。我的用戶帳戶類被註解如下:
@Name("user")
@Entity(name = "UserAccount")
@Table(name = "tbl_user_acct", uniqueConstraints = { @UniqueConstraint(columnNames = "username") })
public class UserAccountBean extends BaseDomainEntity implements
VersionedDomainEntity {
private static final long serialVersionUID = -3573332411594504888L;
@UserEnabled
private boolean enabled;
...
}
我沒有任何問題與任何IdentityManager
類的其他方面(修改口令,創建/刪除帳戶等)我經營的唯一錯誤進入是當我嘗試確定用戶是否啓用。我沒有收到任何異常或錯誤消息,只是返回錯誤的結果。
有沒有其他人遇到過這個?任何想法如何最好地開始解決這個問題?
編輯:一些額外的信息...
我注意到,當我打電話disableUser(String username)
,我的確看到數據庫反映在啓用列。此外,當我撥打enableUser(String username)
時,我立即看到該帳戶已啓用。但是,如果我導航到另一個頁面,然後回來並撥打isUserEnabled()
,它仍然顯示爲false。
通過調用isUserEnabled(username)和Hibernate SQL日誌記錄開啓的斷點,您能看到'select ... from tbl_user_acct where username =?'在日誌中當你讓方法執行? –