У меня есть вопрос.Я не совсем понимаю, как список ролей пользователя распространился с веб-уровня с использованием Spring Security на EJB.Вот мое исследование.
Я записал это в контексте приложения Spring:
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="jimi" password="test" authorities="ROLE_USER, ROLE_ADMIN" />
<security:user name="bob" password="test" authorities="ROLE_USER" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
После входа в систему я открываю страницу, где у меня есть два теста роли пользователя.Один находится на веб-уровне
<p>User is in role <code>ROLE_ADMIN</code>: <code>#{request.isUserInRole('ROLE_ADMIN')}</code></p>
, а второй на уровне EJB:
@Resource
SessionContext ctx;
@Override
public String getString() {
return "Authorized user: " + ctx.getCallerPrincipal() + ", admin=" + ctx.isCallerInRole("ROLE_ADMIN");
}
Но результат противоречив:
Authorized user: jimi, admin=false
User is in role ROLE_ADMIN: true
Я считал, что мне нужнодобавить пользователя jimi
в одну из областей.Но теперь, когда я создал пользователя jimi
с ролью ROLE_ADIM
в области файлов, я получаю тот же результат.Имя пользователя передается, а список ролей - нет.Я читаю руководства, но сейчас не знаю, что именно ищу.
Спасибо за любую подсказку.