首页 > 解决方案 > 添加自定义注销成功处理程序似乎不适用于 Spring Security

问题描述

我有一个奇怪的问题,也许你可以用 Spring Security 帮我解决。

我有一个这样的配置类:

 @EnableWebSecurity
 @Configuration
 public class SecurityConfig extends WebSecurityConfigurerAdapter {

      @Override
      protected void configure(HttpSecurity http) throws Exception {
           http
            .apply(login())
            .and()
            .logout()
                .logoutSuccessUrl("https://www.google.com")
            .and()
                .authorizeRequests()
                    .antMatchers("/api/**")
                        .hasRole("API_USER");

      }
}

该应用程序正在应用一个自定义安全配置器,该配置器添加了一个注销处理程序和异常处理以拒绝访问并允许传递静态资产,例如 favicon。

当我调试时,我看到LogoutFilter正在创建,但我没有看到我logoutSuccessUrl被设置为simpleUrlLogoutSuccessHandler. 我还确保我正在POST使用/logoutCSRF 令牌。我知道订购很重要,所以我想知道是否有人能指出一个明显的缺陷。

登录方法基本上是这样的:

@Override
public void init(HttpSecurity http) throws Exception {
    http
        .exceptionHandling()
            .accessDeniedHandler(myCustomAccessDeniedHandler)
        .and()
        .logout()
            .addLogoutHandler(myLogoutHandler)
        .and()
        .authorizeRequests()
            .antMatchers("**/favicon.*", "/public/**")
                .permitAll();
}

标签: javaspringspring-security

解决方案


推荐阅读