Spring Security targetUrlParameter不重定向

Vic*_*sky 5 java spring-security

我正在尝试将用户重定向回他们点击登录链接的页面.(对于未经过身份验证的用户,页面是只读的,但对于已登录的用户,这些页面是可写的.)如何在用户登录后将用户重定向回他们来自的位置?

我正在通过以下链接向用户发送登录页面:/spring_security_login?redirect=/item5.登录后,我希望将用户重定向到/item5页面.但是,它们总是被重定向到/页面.

这是我正在使用的配置:

<http use-expressions="true">
    <intercept-url pattern="/**" access="permitAll" />
    <form-login authentication-success-handler-ref="simpleUrlAuthenticationSuccessHandler"/>
</http>
<beans:bean id="simpleUrlAuthenticationSuccessHandler"
    class="org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler">
    <beans:property name="defaultTargetUrl" value="/"/>
    <beans:property name="targetUrlParameter" value="redirect"/>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)

似乎targetUrlParameter没有像预期的那样被提升.我正在使用Spring Security 3.1.4

Lau*_*ntG 7

使用以下规则时应用以下规则SimpleUrlAuthenticationSuccessHandler:

  • 如果alwaysUseDefaultTargetUrl属性设置为true,则defaultTargetUrl属性将用于目标.
  • 如果已在请求中设置了与targetUrlParameter的值匹配的参数,则该值将用作目标.默认情况下,它具有值"spring-security-redirect".
  • 如果设置了useReferer属性,则将使用"Referer"HTTP标头值(如果存在).
  • 作为后备选项,将使用defaultTargetUrl值.

根据您的配置,这应该工作.我的猜测是,您在登录表单中referer发送POST请求时没有传播.通常,您应该referer在登录页面的隐藏字段中写入值,以便将referer参数传输到spring_security_login.