Spring Remember-Me не предоставляет правильные данные пользователя - PullRequest
1 голос
/ 24 августа 2011

Я использовал функцию «Помни меня» в Spring Security 3.0.5, и на своих страницах jsp я пытался получить доступ к данным пользователя.

public class UserDetailsImpl implements UserDetails, Serializable

с несколькими дополнительными атрибутами (URL-адрес изображения, полное имя и т. Д.).Теперь, если я получаю доступ к этим атрибутам, используя

<sec:authentication property="details.pic"/>

после обычного входа в систему (когда функция «запомнить меня» не срабатывает), все работает нормально.
Однако, когда я закрываю браузер и снова- при открытии моей защищенной страницы функция запомнить меня возвращает другой объект вместо объекта сведений.

Как я могу это исправить?Или мне следует рассмотреть два разных случая?

Спасибо.

Позже Редактировать: В итоге я получил это в своем jsp:

<sec:authorize access="isRememberMe()">
    <c:set var="user" value="${pageContext.request.userPrincipal.principal}" />
</sec:authorize>
<sec:authorize access="isFullyAuthenticated()">
    <c:set var="user" value="${pageContext.request.userPrincipal.details}" />
</sec:authorize>

Это делает работу, но мне не очень нравится подход ..

Ответы [ 2 ]

1 голос
/ 30 августа 2011
<sec:authorize access="isRememberMe()">
    <c:set var="user" value="${pageContext.request.userPrincipal.principal}" />
</sec:authorize>
<sec:authorize access="isFullyAuthenticated()">
    <c:set var="user" value="${pageContext.request.userPrincipal.details}" />
</sec:authorize>
0 голосов
/ 24 августа 2011

Убедитесь, что ваш UserDetailsService.loadByUsername () вызывается. Если это не так, установите точку останова в processAutoLoginCookie () (либо в PersistentTokenBasedRememberMeServices, либо в TokenBasedRememberMeServices в зависимости от того, какой из них вы используете) и выполните шаги по нему, чтобы увидеть, что происходит.

...