Spring Security 6自定义登录页迁移报错求助
解决Spring Security 6迁移后
MvcHandlerMappingIntrospector Bean缺失异常 问题原因
Spring Security 6中,当配置里使用mvcMatcher()这类基于Spring MVC的请求匹配规则,或者依赖MVC路由解析功能时,需要MvcHandlerMappingIntrospector Bean来处理MVC映射信息,该Bean在部分场景下不会自动注册,从而抛出缺失异常。
解决方案
1. 手动注册MvcHandlerMappingIntrospector Bean
在你的Spring Security配置类中添加以下Bean定义:
@Configuration public class SecurityConfig { // 注册MvcHandlerMappingIntrospector Bean @Bean MvcHandlerMappingIntrospector mvcHandlerMappingIntrospector(ApplicationContext applicationContext) { return new MvcHandlerMappingIntrospector(applicationContext); } @Bean SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth .mvcMatcher("/login").permitAll() .anyRequest().authenticated() ) .formLogin(form -> form .loginPage("/login") .permitAll() ); return http.build(); } }
2. 替换MVC匹配器(可选)
如果不需要依赖Spring MVC的匹配规则,可以将mvcMatcher()替换为antMatcher()或requestMatchers(),避免依赖MvcHandlerMappingIntrospector:
@Bean SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth // 用antMatcher替代mvcMatcher .antMatcher("/login").permitAll() .anyRequest().authenticated() ) .formLogin(form -> form .loginPage("/login") .permitAll() ); return http.build(); }
3. 检查依赖完整性
确保项目已正确引入Spring MVC相关依赖:
- Spring Boot项目:确保
pom.xml(Maven)或build.gradle(Gradle)中包含spring-boot-starter-web依赖,它会自动引入Spring MVC的核心组件。 - 非Spring Boot项目:手动引入
spring-webmvc依赖,并确保版本与Spring Security 6兼容。
4. 确认配置类扫描范围
确保你的SecurityConfig配置类被Spring容器扫描到,比如添加@Configuration注解,并位于Spring组件扫描的包路径下。
内容的提问来源于stack exchange,提问作者Cineczeq
相关产品推荐
相关产品推荐

