Spring Cloud Gateway «забывает» аутентифицированного пользователя - PullRequest
0 голосов
/ 26 января 2019

Я переместил свой проект из Finchley SR2 в версию Spring Cloud для Greenwich Release, а затем я увидел, что приложение на основе Spring Cloud Gateway требует повторного ввода учетных данных пользователя даже после простой перезагрузки страницы последующего приложения.

Репро проект: https://github.com/rkudryashov/microservices-example, dev_security_issue ветка. README.md содержит инструкции по запуску всех приложений. После запуска вы можете пройти аутентификацию в https://localhost/login с помощью john_doe/qwerty, а затем перейти к https://localhost/items-ui/greeting. После перезагрузки этой страницы вы снова увидите страницу входа.

@EnableWebFluxSecurity
class SecurityConfig {

    @Bean
    fun springWebFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain = http
        .formLogin().loginPage("/login")
        .and()
        .authorizeExchange()
        .pathMatchers("/login").permitAll()
        .pathMatchers("/static/**").permitAll()
        .pathMatchers("/favicon.ico").permitAll()
        .pathMatchers("/webjars/**").permitAll()
        .pathMatchers("/actuator/**").permitAll()
        .anyExchange().authenticated()
        .and()
        .csrf().disable()
        .build()

    @Bean
    fun reactiveUserDetailsService(): ReactiveUserDetailsService {
        val user = User.withDefaultPasswordEncoder()
            .username("john_doe").password("qwerty").roles("USER")
            .build()
        val admin = User.withDefaultPasswordEncoder()
            .username("admin").password("admin").roles("ADMIN")
            .build()
        return MapReactiveUserDetailsService(user, admin)
    }
}

Если у вас есть идеи, как это исправить, пожалуйста, дайте мне знать.

...