Spring Security targetUrlParameter不重定向

我试图将用户重定向到他们单击登录链接的页面。(对于未经身份验证的用户,页面是只读的;对于已登录的用户,页面是可写的。)如何将用户重定向回他们登录后的来源?

我发送到用户登录页面此链接:/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>

看来targetUrlParameter并没有像预期的那样得到重视。我正在使用Spring Security 3.1.4

回答:

使用以下规则时,应遵循以下规则SimpleUrlAuthenticationSuccessHandler

  • 如果将alwaysUseDefaultTargetUrl属性设置为true,则将defaultTargetUrl属性用于目标。
  • 如果在请求中设置了与targetUrlParameter值匹配的参数,则该值将用作目标。默认情况下,其值为“ spring-security-

    redirect”。

  • 如果设置了useReferer属性,则将使用“ Referer” HTTP标头值(如果存在)。
  • 作为后备选项,将使用defaultTargetUrl值。

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

以上是 Spring Security targetUrlParameter不重定向 的全部内容, 来源链接: utcz.com/qa/409559.html

回到顶部