Распространение ролей пользователей с веб-уровня Spring Security на уровень EJB - PullRequest
2 голосов
/ 24 октября 2011

У меня есть вопрос.Я не совсем понимаю, как список ролей пользователя распространился с веб-уровня с использованием 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 в области файлов, я получаю тот же результат.Имя пользователя передается, а список ролей - нет.Я читаю руководства, но сейчас не знаю, что именно ищу.

Спасибо за любую подсказку.

...