Spring oauth2 SimpleUrlAuthenticationFailureHandler失败时有两个重定向

时间:2017-10-03 14:15:58

标签: spring spring-security-oauth2

出于某种原因,使用oauth2和自定义SimpleUrlAuthenticationFailureHandler的spring会在登录失败时重定向两次。

它按预期调用http://localhost:8081/login?error,但位置标题为http://localhost:8081/login,因此我看到了额外的重定向。

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    http.requestMatchers()
        .antMatchers("/login",  "/oauth/authorize")
        .and()
            .authorizeRequests()
            .anyRequest()
            .authenticated()
        .and()
            .formLogin()
            .loginPage("/" + URLConstants.LOGIN)
            .loginProcessingUrl("/" + URLConstants.LOGIN)
            //.failureUrl("/login?error")
            .failureHandler(authFailureHandler)
            .permitAll();

SimpleUrlAuthenticationFailureHandler

@Component
public class AuthFailureHandler extends 
SimpleUrlAuthenticationFailureHandler {

@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {
    // some code
    saveException(request, exception);
    getRedirectStrategy().sendRedirect(request, response,  "/login?error");

上面的代码onAuthenticationFailure几乎调用与onAuthenticationFailure中的原始代码相同的方法。我也试过了     super.onAuthenticationFailure(请求,响应,异常); 但我得到相同的结果(额外的重定向)

如果我删除.failureHandler(authFailureHandler),则代码按预期工作。有什么想法吗?

查看附件图片 额外重定向 - 使用SimpleUrlAuthenticationFailureHandler Extra redirect - with SimpleUrlAuthenticationFailureHandler 正如所料 - 没有SimpleUrlAuthenticationFailureHandler As expected - without SimpleUrlAuthenticationFailureHandler

0 个答案:

没有答案