2011-08-24 25 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

相關問題