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