使用SpringBoot提供接口给前端,前端需要每个不同的系统带个前缀,所以在配置文件里面加上了server.servlet.path=/api/这个属性,这样就让全局接口路径都加上了这个前缀
然后使用了spring的拦截器
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Bean
SecurityInterceptor securityInterceptor() {
return new SecurityInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 多个拦截器组成一个拦截器链
// addPathPatterns 用于添加拦截规则
// excludePathPatterns 用户排除拦截
registry.addInterceptor(securityInterceptor()).addPathPatterns("/api/admin/**");
}
}
我本想拦截/api/admin下的请求,但是一直拦截不到,改了很多方式都没用,后来还是自己灵机一动想到了是不是因为我配置了server.servlet.path,这个前缀的路径不应该在拦截器的urlPattern里面,验证果然是的!!!
这也说明拦截器拦截的路径是我们真正写RequestMapping这种的里面写的url,不是真正对外提供的路径,但是如果换成过滤器,应该就是真正对外的路径了,感兴趣的可以试验下用Filter过滤器试试
网友评论