2011-08-24 60 views
1

我使用了Spring Security 3.0.5的功能“Remember-Me”,并在我的jsp页面中尝试访问用户的详细信息。春天记得我没有提供正确的用户详细信息

public class UserDetailsImpl implements UserDetails, Serializable 

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

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

它的工作,但我真的不喜欢的方式..

回答

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

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

+0

loadByUsername它被调用。问题在于,我没有通过返回UserDetailsImpl,而是每次记住时都会得到一个org.springframework.security.web.authentication.WebAuthenticationDetails对象 - 我得到执行。 – tXK

+0

I认为你想使用。 AuthenticationDetails是与UserDetails不同的概念。 – sourcedelica

+0

我更新了一些额外信息的主要帖子,你可以查看一下,看看我迄今为止取得的成就 – tXK

相关问题