1

ユーザーアカウントの作成と認証を処理するためにSeamIdentityManagerとコンポーネントを活用するJBossSeamアプリがあります。JpaIdentityStore私のcomponents.xmlファイルは正しく設定さIdentityManagerれており、問題なくアカウントを作成するために使用できます。

アカウントの有効化/無効化など、基本的なアカウントのメンテナンスを実行できるページを作成しました。isUserEnabled(String username)ただし、でメソッドを呼び出すと、IdentityManager常に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)、データベースがENABLED列にそれを反映しているのが実際にわかります。さらに、電話をかけるとenableUser(String username)、アカウントが有効になっていることがすぐにわかります。ただし、別のページに移動してから戻って電話をかけるとisUserEnabled()、それでもfalseが表示されます。

4

1 に答える 1

0

遅延フェッチに関連する問題であることが判明しました。userAccountプロパティを持つUserProfileオブジェクトがあります。関係はレイジーフェッチされます。イーガーフェッチに変更すると、isUserEnabled()から適切な応答を受け取りました。

于 2011-09-03T01:39:28.507 に答える