Я переместил свой проект из 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)
}
}
Если у вас есть идеи, как это исправить, пожалуйста, дайте мне знать.