现在有个需求,如何实现部分接口认证和授权?它的原理是什么?
首先,Spring Security 对 Servlet 的支持是基于Servlet过滤器的,所以我们肯定要通过过滤器的改写来实现这个功能,下图是secuityFilterChain 所在的位置。
现在我们通过自定义一个 SecurityFilterChain 来实现功能。
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.csrf(Customizer.withDefaults())// csrf过滤器
.authorizeRequests(authorizeRequests ->
authorizeRequests
.antMatchers("/open/**").permitAll() // 允许所有用户访问以/open/开头的URL
.anyRequest().authenticated() // 其他所有请求都需要认证
)
.httpBasic(Customizer.withDefaults())//