我有一个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 =?'在日志中当你让方法执行? –