EJB и isCallerInRole: неправильный вывод с проверкой нескольких ролей в SessionContext

У меня проблема с isCallerInRole метод из SessionContext, Приложение работает на Glassfish 2.1 и использует JDK6.

В следующем классе я раскрываю два метода, которые определяют, играет ли текущий пользователь определенную роль или нет. В частности, я собираюсь проверить на две конкретные роли, скажем, Role1 а также Role2, CheckRemote это интерфейс для CheckFacade,

@Stateless
@DeclareRoles({"Role1", "Role2"})
public class CheckFacade implements CheckRemote {

    @Resource
    private SessionContext ctx;

    @Override
    public Boolean hasRole1() {
        return ctx.isCallerInRole("Role1");
    }

    @Override
    public Boolean hasRole2() {
        return ctx.isCallerInRole("Role2");
    }
}

Когда я иду звонить hasRole1() или же hasRole2() Я всегда получаю false в результате, даже если у пользователя есть роль.

Теперь, если я рассмотрю следующую версию, которая ориентирована только на одну роль, то все работает нормально, то есть я получаю false или же true если пользователь не имеет роли или имеет роль, соответственно.

@Stateless
@DeclareRoles("Role1")
public class CheckFacade implements CheckRemote {

    @Resource
    private SessionContext ctx;

    @Override
    public Boolean hasRole1() {
        return ctx.isCallerInRole("Role1");
    }

}

Может быть, я что-то упустил. Любая идея?

0 ответов

Другие вопросы по тегам