以下是我在成功登录后将访问者重定向到页面的内容:
<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的原因。
请随时发表评论。
谢谢!
答案 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>
问候