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");
}
}
Может быть, я что-то упустил. Любая идея?