Spring mvc 的拦截器怎么放行一些请求不进行拦截?

配置权限校验和登录校验,日志记录或其他操作,这些都用了Spring MVC的多个拦截器。

但是有一个问题,有一些请求是拦截器不能拦截的,不能进行拦截,否侧会出现异常和错误。比如受信任节点发来的请求,是不用进行权限校验和登录校验的。

拦截器有多个,不可能每一个都写放行判断代码,而且拦截不一定是基于path,可能也是基于请求头。即使是基于类似BaseInterceptor的方式,虽然节省了代码,可还是会执行重复的放行判断的java代码。

spring mvc 有没有一个中间件组件,可以在这里面判断请求是否可以进行拦截或不拦截直接放行?不用进入拦截器的流程?

阅读 323
评论
    2 个回答

    写个白名单数组进行过滤吧,比如下面这样

    // 不需要拦截的请求,可以根据实际需求切换为请求头的某个参数值
    private static final String[] whiteList = {"/oauth/token","/captchaImage"};
    
    // 跳过不需要验证的路径
    if (Arrays.asList(whiteList).contains(url)){
       // 调用逻辑方法,处理业务 
    }else {
       // 拦截器处理请求 
    }
      相似问题
      推荐文章