Spring Remember-Me没有提供正确的用户详细信息

时间:2011-08-24 13:23:00

标签: security spring jsp remember-me

我使用了Spring Security 3.0.5的功能“Remember-Me”,在我的jsp页面中,我试图访问用户的详细信息。

public class UserDetailsImpl implements UserDetails, Serializable

有一些额外的属性(图片网址,全名等)。 现在,如果我使用

访问这些属性
<sec:authentication property="details.pic"/>

正常登录后(记住我的功能没有启动)一切正常 但是,当我关闭浏览器并重新打开我的安全页面时,remember-me功能会返回另一个对象而不是详细信息对象。

我该如何解决这个问题? 或者我应该对待这两种不同的情况吗?

谢谢。

稍后编辑: 我最终在我的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 个答案:

答案 0 :(得分:1)

<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>

答案 1 :(得分:0)

验证是否正在调用您的UserDetailsS​​ervice.loadByUsername()。如果不是,那么在processAutoLoginCookie()中设置一个断点(在PersistentTokenBasedRememberMeServices或TokenBasedRememberMeServices中,取决于你正在使用的那个)并逐步查看它发生了什么。