Spring Cloud Gateway“忘记了”经过身份验证的用户

时间:2019-01-26 10:44:14

标签: spring-boot spring-security spring-cloud spring-cloud-gateway

我已经将项目从Finchley SR2移到了Spring Cloud项目的Greenwich Release版本,然后我看到基于Spring Cloud Gateway的应用程序甚至在重新加载下游应用程序页面后仍需要重新输入用户凭据。 / p>

Repro项目:https://github.com/rkudryashov/microservices-exampledev_security_issue分支。 README.md包含有关如何启动所有应用程序的说明。启动后,您可以使用https://localhost/loginjohn_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)
    }
}

如果您有解决办法,请告诉我。

0 个答案:

没有答案