【问题标题】:Spring WebFlux 5.0.RELEASE and Spring Security 5.0.M5Spring WebFlux 5.0.RELEASE 和 Spring Security 5.0.M5
【发布时间】:2018-04-12 11:48:22
【问题描述】:

我正在尝试使用 WebFlux 构建 Web 服务。当我尝试使用 Spring WebFlux 配置 Spring Security 时,请求不会被 Spring Security 拦截。我的 Spring Security 配置是:

@EnableWebFlux
@EnableWebFluxSecurity
@Configuration
public class WebConfig {
    @Bean
    public MapUserDetailsRepository userDetailsRepository() {
        UserDetails cust =
           User.withUsername("user1").password("password") 
            .roles("USER").build();
        UserDetails admin = 
          User.withUsername("admin1").password("password")
            .roles("ADMIN").build();
        return new MapUserDetailsRepository(cust, admin);
    }

    @Bean
    public SecurityWebFilterChain springWebFilterChain(
        HttpSecurity httpSecurity) {
    return httpSecurity.authorizeExchange().anyExchange().
             authenticated().and().build();
}

}

【问题讨论】:

  • 您如何指定安全注释?您是在控制器上执行此操作,还是在处理程序上使用方法级安全性?
  • 我没有使用@Secured 注解,因为它不起作用。
  • 我看到有人面临类似问题:stackoverflow.com/questions/46325632/…

标签: spring-security spring-webflux


【解决方案1】:

一种方法是使用方法安全性。您需要将@EnableReactiveMethodSecurity 添加到您的配置类中,然后使用注释保护处理程序组件方法,例如@PreAuthorize("isAuthenticated()")

这就是我设法让它与 Spring Boot 2.0.0.M4 一起工作的方法,但这可能取决于您正在执行的请求处理类型。

【讨论】:

    【解决方案2】:

    这是将 Spring Security 与 WebFlux 一起使用时的问题。解决方法在这里发布:https://jira.spring.io/browse/SPR-16144

    【讨论】:

      猜你喜欢
      • 2021-08-02
      • 2018-11-03
      • 2016-11-07
      • 2018-05-07
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 2018-12-29
      • 2020-04-13
      相关资源
      最近更新 更多