使用spring security在身份验证失败后重定向回原始页面

at.*_*at. 8 java security spring spring-mvc spring-security

我正在使用Spring 3.0和Spring Security.我总是使用以下配置:

    <form-login login-page="/login" authentication-failure-url="/login?error=credentials" default-target-url="/account" login-processing-url="/security_check"/>
Run Code Online (Sandbox Code Playgroud)

因此,当用户未正确登录时,他们会转到/ login.现在我在网站的每个页面都有一个登录对话框.如果他们没有正确登录,我不希望他们重定向到/ login ..而是我希望他们返回到他们所在的页面.当我看到error = credentials作为参数时,我会弹出相同的对话框.

那我该怎么做?

Aar*_*ers 2

 <!-- redirect url for failure of authentication -->
 <bean id="simpleUrlAuthenticationFailureHandler" class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
        <constructor-arg value="/login.jsp?error=1"></constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)

我建议从上下文访问该对象并重置 url 或编写您自己的自定义处理程序,该处理程序可能会执行特定于您所在页面的操作

http://static.springsource.org/spring-security/site/apidocs/org/springframework/security/web/authentication/SimpleUrlAuthenticationFailureHandler.html

  • 嗯,看起来我可以在 SimpleUrlAuthenticationFailureHandler 上设置 RedirectStrategy 属性。RedirectStrategy 看起来像一个简单的接口来实现,我可以在其中调用 response.sendRedirect(request.getHeader("Referer")); 这是处理这种情况的正确方法吗? (2认同)