Spring Boot 3中无法使用antMatchers问题求助
Spring Boot 3中Spring Security无法使用antMatchers的解决办法
Spring Boot 3对应的Spring Security 6版本,已经移除了authorizeRequests()方法,同时antMatchers()也被标记为弃用,这就是你无法在配置中使用antMatchers()的原因。替代方案是使用authorizeHttpRequests()结合requestMatchers()来完成请求授权配置。
修改后的配置示例
@Configuration public class ProjectSecurityConfig { @Bean SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception { http // 替换原有的authorizeRequests()为authorizeHttpRequests() .authorizeHttpRequests(auth -> auth // 使用requestMatchers()替代antMatchers(),支持原有的Ant路径模式 .requestMatchers("/", "/home", "/public/**").permitAll() // 其他所有请求需要认证 .anyRequest().authenticated() ) // 可根据需求配置表单登录、退出等规则 .formLogin(form -> form.permitAll()) .logout(logout -> logout.permitAll()); return http.build(); } }
额外说明
如果需要显式使用Ant风格匹配规则,可以直接传入AntPathRequestMatcher实例:
.requestMatchers(new AntPathRequestMatcher("/api/**")).permitAll()
不过requestMatchers()默认已经支持Ant路径模式(比如"/api/**"这种写法),和原antMatchers()的行为完全一致,无需额外配置。
内容的提问来源于stack exchange,提问作者John Peter
相关产品推荐
相关产品推荐

