“拦截器不生效”这个现象在 Spring / Spring Boot / Web 框架 里非常常见,但具体原因要看你用的是哪一类拦截器。下面我按 最常见场景 给你一个排查清单,你可以逐条对照。
HandlerInterceptor 不生效只写 implements HandlerInterceptor 是不够的中国,还需要:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/**");
}
}
❌ 常见错误:
WebMvcConfigurer/api/** 但实际是 /user)@EnableWebMvc 或自定义配置覆盖如果你写了:
@EnableWebMvc
会 接管 Spring MVC 的默认配置,可能导致拦截器失效。
✅ 建议:
@EnableWebMvcWebMvcConfigurer以下情况拦截器 不会生效:
/static/**)Filter 提前返回WebFlux(不是 MVC).addPathPatterns("/api/**")
.excludePathPatterns("/api/login")
❌ 常见错误:
/api/user/list,但写成了 /api/*excludePathPatterns 写错如果你是 权限 / 登录拦截:
.authorizeHttpRequests(auth -> auth
.requestMatchers("/**").permitAll()
)
✅ 解决:
.anyRequest().authenticated()
Filter 在 Interceptor 之前如果 Security 放行了,Interceptor 可能根本没机会执行。
@Component 或 @Bean@Component
public class MyFilter implements Filter {}
或:
@Bean
public FilterRegistrationBean<MyFilter> filter() {
...
}
Filter 一般匹配:
/*
而不是
/**
如果你升级到 Spring Boot 3:
jakarta.servletjavax.servlet 的拦截器直接失效你可以回答我这几个问题,我可以精准定位:
只要你贴一点代码,我可以直接帮你改到“立刻生效”。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。