Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架。它允许开发者为基于 Spring 的应用程序提供安全控制。过滤链(Filter Chain)是 Spring Security 中的一个重要概念,它由一系列过滤器(Filter)组成,这些过滤器按照特定的顺序执行,以处理请求和响应。
Spring Security 支持多种类型的过滤器,包括但不限于:
在需要为不同的 URL 模式或请求类型应用不同的安全策略时,使用多个过滤链非常有用。例如:
以下是一个示例,展示如何使用特定的匹配器创建两个过滤链:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.securityMatcher("/api/**")
.authorizeRequests()
.antMatchers("/api/public/**").permitAll()
.anyRequest().authenticated()
.and()
.httpBasic()
.and()
.securityMatcher("/admin/**")
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.and()
.formLogin()
.loginPage("/admin/login")
.permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER")
.and()
.withUser("admin").password("{noop}password").roles("ADMIN");
}
}
/api/**
匹配所有以 /api/
开头的请求,/admin/**
匹配所有以 /admin/
开头的请求。通过这种方式,可以为不同的 URL 模式配置不同的安全策略,从而实现更灵活和细粒度的访问控制。
领取专属 10元无门槛券
手把手带您无忧上云