2

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

<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 的属性,该属性设置为“/account/quickview”。当调用类的 onAuthenticationSuccess 时,我从主体获取主体和帐户 ID。此时,我将“/account_id”附加到temporaryTargetUrl 并调用super:

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

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

请随意发表评论。

谢谢!

4

1 回答 1

2

您可以将帐户 ID 保存到 spring security session 对象中,并在调用 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>

问候

于 2013-06-13T04:41:35.563 回答