Как выйти из GET-запроса в SpringBoot WebFlux - PullRequest
0 голосов
/ 27 мая 2019

Как мне настроить securityWebFilterChain(ServerHttpSecurity http), чтобы мое приложение выходило из системы GET /logout?

У меня есть SpringBoot 2 Spring 5 и WebFlux

Я пытался:

  http
    .logout()
      .requiresLogout(ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, "/logout"))
      .logoutSuccessHandler(logoutSuccessHandler("/after-life"))

Проблема в том, что LogoutPageGeneratingWebFilter находится раньше, чем LogoutWebFilter в испущенном SecurityWebFilterChain. В этом есть жестко закодированный .pathMatchers(HttpMethod.GET, "/logout") - который заставляет мое приложение всегда выдавать html-страницу по запросу GET.

Я не нашел способа подавить автоматическое создание страницы выхода из системы: (

1 Ответ

1 голос
/ 27 мая 2019

Как указано в документации ,

По умолчанию Spring Security создает страницу входа в систему в «/ login» и страницу выхода в «/ logout». Если это настроено: Страница входа и выхода по умолчанию больше не предоставляется Приложение должно отобразить страницу входа по указанному URL Приложение должно отобразить страницу ошибки аутентификации по указанному URL + «? Error» Для POST произойдет аутентификация по предоставленному URL

Пользовательская конфигурация для входа по умолчанию и без выхода по умолчанию.

    @Bean
    public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity httpSecurity){

        LoginPageGeneratingWebFilter loginpage= new LoginPageGeneratingWebFilter();
        loginpage.setFormLoginEnabled(true);
        return httpSecurity
                .addFilterAt(loginpage, SecurityWebFiltersOrder.LOGIN_PAGE_GENERATING)
                .authorizeExchange()
                    .pathMatchers("/home").authenticated()
                        .and().formLogin()                      
                            .loginPage("/login")                         
                        .and()
                        .logout()
                        .logoutUrl("/logout").requiresLogout(ServerWebExchangeMatchers.pathMatchers(HttpMethod.GET, "/logout"))
                        .and()

                .build();

    }
...