2013-06-13 44 views
1

後,下面就是我成功登錄後,訪問者重定向到一個頁面:春季安全:重定向到具有路徑變量的URL登錄成功

<bean id="authenticationSuccessHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler" p:defaultTargetUrl="/account/quickview"/> 

我想直接訪問者到URL使用以下URL:

/account/quickview/id_of_account_object 

如何配置Spring安全性以在成功登錄後將該帳戶ID附加到「/ account/quickview」?

我正在使用Spring Security 3.1

感謝和問候。

這是我如何解決這個

我創建SavedRequestAwareAuthenticationSuccessHandler的子類,我添加了一個名爲temporaryTargetUrl屬性,該屬性設置爲「/帳號/快速查看」。當類'onAuthenticationSuccess被調用時,我從委託人獲得委託人和賬戶ID。在這一刻,我追加「/ ACCOUNT_ID」到temporaryTargetUrl並調用超:

super.setDefaultTargetUrl(this.temporaryTargetUrl + "/" + account.getId()); 

注意SavedRequestAwareAuthenticationSuccessHandler的getDetaulTargetUrl無法使用Spring的包,這就是爲什麼我在首位創建temporaryTargetUrl之外。

請隨時發表評論。

謝謝!

回答

2

您可以將帳戶ID保存到Spring安全會話對象中,並在調用quickview url時檢索該對象。

重定向到URL添加到bean customAuthenticationSuccessHandler以下屬性

<property name="authenticationSuccessHandler" ref="successHandler" /> 

,並創建successHandler豆:這麼多的輸入

<bean id="successHandler" class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler"> 
    <property name="defaultTargetUrl" value="/account/quickview" /> 
    <property name="alwaysUseDefaultTargetUrl" value="true" /> 
</bean> 

問候

+0

感謝。請你詳細說一下「Spring安全會話對象並在被稱爲quickview url時檢索對象」?我不知道如何去做。我在你的文章中一直在做其他事情。 – curious1

+0

在我的實現中,我只實現了「UserDetailsS​​erviceImpl實現AuthenticationManager,UserDetailsS​​ervice,ApplicationContextAware」。在「UserDetailsS​​erviceImpl」中,我有一個方法loadUserByUsername。 – curious1

相關問題