1

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

public class UserDetailsImpl implements UserDetails, Serializable

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

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

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

我怎样才能解决这个问题 ?还是我应该对待这两种不同的情况?

谢谢你。

后来编辑: 我最终在我的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>

它可以完成工作,但我真的不喜欢这种方法..

4

2 回答 2

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>
于 2011-08-30T14:39:41.693 回答
0

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

于 2011-08-24T13:55:49.817 回答