16. WebFlux Security
Spring Security 的 WebFlux 支持依赖于WebFilter
,并且对 Spring WebFlux 和 Spring WebFlux.Fn 相同。您可以找到一些演示以下代码的示例应用程序:
-
您好 WebFlux hellowebflux
-
您好 WebFlux.Fn hellowebfluxfn
-
Hello WebFlux 方法hellowebflux-method
16.1 最低的 WebFlux 安全配置
您可以在下面找到最小的 WebFlux 安全配置:
@EnableWebFluxSecurity
public class HelloWebfluxSecurityConfig {
@Bean
public MapReactiveUserDetailsService userDetailsService() {
UserDetails user = User.withDefaultPasswordEncoder()
.username("user")
.password("user")
.roles("USER")
.build();
return new MapReactiveUserDetailsService(user);
}
}
此配置提供表单和 http 基本身份验证,设置授权以要求经过身份验证的用户访问任何页面,设置默认登录页面和默认注销页面,设置与安全性相关的 HTTPHeaders,CSRF 保护等。
16.2 显式 WebFlux 安全配置
您可以在下面找到最小 WebFlux 安全配置的显式版本:
@EnableWebFluxSecurity
public class HelloWebfluxSecurityConfig {
@Bean
public MapReactiveUserDetailsService userDetailsService() {
UserDetails user = User.withDefaultPasswordEncoder()
.username("user")
.password("user")
.roles("USER")
.build();
return new MapReactiveUserDetailsService(user);
}
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
http
.authorizeExchange()
.anyExchange().authenticated()
.and()
.httpBasic().and()
.formLogin();
return http.build();
}
}
此配置显式设置与最小配置相同的所有内容。在这里,您可以轻松地更改默认值。
Security HTTP Response Headers
This section discusses Spring Security's support for adding various security headers to the response of WebFlux.