springboot拦截器url pattern匹配不上

使用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过滤器试试

你可能感兴趣的:(springboot拦截器url pattern匹配不上)