Шов - Проблемы с IdentityManager.isUserEnabled () - PullRequest
1 голос
/ 31 августа 2011

У меня есть приложение JBoss Seam, которое использует компоненты IdentityManager и JpaIdentityStore Seam для обработки создания учетной записи пользователя и аутентификации. Мой 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.

1 Ответ

0 голосов
/ 03 сентября 2011

Оказалось, что проблема связана с отложенной загрузкой. У меня есть объект UserProfile со свойством userAccount. Отношение ленивое. Как только я изменил его на Eager fetching, я получил соответствующий ответ от isUserEnabled ().

...