多个 WebSecurityConfigurerAdapter 的 order 问题

多个 WebSecurityConfigurerAdapter 的 order 问题

默认的WebSecurityConfigurerAdapter里的@Order值是100(我们可以在该类上可以明确看到@Order(100)),而我们在ResourceServerConfigurerAdapter上添加了@EnableResourceServer注解,这个玩意儿是干什么用的呢?他其中之一就是定义了@Order值为3(该注解里引用了ResourceServerConfiguration,这个类里面定义了Order值).在spring 的体系里Order值越小优先级越高

参考:

https://www.jianshu.com/p/fe1194ca8ecd

转载于:https://my.oschina.net/hongdaorong/blog/3045566

Spring Security 可以通过多个配置类来实现不同的安全策略,每个配置类都可以有自己的安全过滤器链。具体的实现方式如下: 1. 创建多个配置类,每个配置类都需要继承自 `WebSecurityConfigurerAdapter` 类。 2. 在每个配置类中覆盖 `configure(HttpSecurity http)` 方法,来实现不同的安全策略。 3. 在 `WebSecurityConfigurerAdapter` 子类中添加 `@Order(value = n)` 注解,来指定配置类的优先级,其中 n 的值越小,优先级越高。 4. 在主配置类中,使用 `@Import` 注解来导入所有的子配置类。 例如,下面是两个配置类,一个用于基于表单的身份验证,另一个用于基于 HTTP Basic 的身份验证: ```java @Configuration @Order(1) public class FormLoginWebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/login").permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .defaultSuccessUrl("/home") .permitAll() .and() .logout() .permitAll(); } } @Configuration @Order(2) public class HttpBasicAuthWebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/api/**").hasRole("USER") .anyRequest().authenticated() .and() .httpBasic(); } } ``` 在主配置类中,使用 `@Import` 注解来导入所有的子配置类: ```java @Configuration @EnableWebSecurity @Import({FormLoginWebSecurityConfig.class, HttpBasicAuthWebSecurityConfig.class}) public class MainWebSecurityConfig extends WebSecurityConfigurerAdapter { // ... } ``` 这样,就可以通过多个配置类来实现不同的安全策略了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值