Spring Security:成功登录后,重定向到带路径变量的URL

时间:2013-06-13 04:25:37

标签: spring spring-security

以下是我在成功登录后将访问者重定向到页面的内容:

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

我想将访问者引导到包含以下网址的网址:

/account/quickview/id_of_account_object

如何配置Spring安全性,以便在成功登录后将该帐户ID附加到“/ account / quickview”?

我正在使用Spring Security 3.1

谢谢和问候。

以下是我解决此问题的方法

我创建了SavedRequestAwareAuthenticationSuccessHandler的子类,并添加了一个名为temporaryTargetUrl的属性,该属性设置为“/ account / quickview”。当调用类onAuthenticationSuccess时,我从主体获取主体和帐户ID。此时,我将“/ account_id”附加到temporaryTargetUrl并调用super:

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

请注意,在Spring的包之外,SavedRequestAwareAuthenticationSuccessHandler的getDetaulTargetUrl不可用,这就是我首先创建了temporaryTargetUrl的原因。

请随时发表评论。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将帐户ID保存到spring安全会话对象中,并在调用quickview URL时检索该对象。

重定向到url添加到bean customAuthenticationSuccessHandler中的以下属性

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

并创建successHandler bean:

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

问候

相关问题