我已经将项目从Finchley SR2移到了Spring Cloud项目的Greenwich Release版本,然后我看到基于Spring Cloud Gateway的应用程序甚至在重新加载下游应用程序页面后仍需要重新输入用户凭据。 / p>
Repro项目: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)
}
}
如果您有解决办法,请告诉我。