Springboot 实现拦截器获取header内容

背景

事情是这样的,最近项目做了个渗透测试,被查到了横向越权的问题,是因为前端传到后端的请求,经过APIportal的时候验证过了token,后端就没有去验证了,现在要加上这一步。

分析

既然是所有前端的请求都要做校验,那么如果一个接口一个接口的做当然是不可取的,而springmvc的拦截器可以在里面统一的进行处理,很适合我们的需求。

实现

那么我们就先来实现一下吧。

  • 首先实现一个拦截器:
@Component
public class AuthInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        log.info(">>>AuthInterceptor>>>>>>>在请求处理之前进行调用(Controller方法调用之前)");

        String token = request.getHeader("token");

        log.info("token : [ {} ]", token);

        //....处理逻辑

        return true;// 只有返回true才会继续向下执行,返回false取消当前请求
    }
}
  • 将拦截器配置进springboot中:
@Configuration
public class WebAuthConfig extends WebMvcConfigurationSupport {
    @Resource
    AuthInterceptor authInterceptor;

    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(authInterceptor).addPathPatterns("/**");

    }
}

这里需要注意,以前我们是用的WebMvcConfigurerAdapter,但是这个类已经过时了,对于一个强迫症来说,当然是得换掉它了,我们可以使用WebMvcConfigurer或者WebMvcConfigurationSupport,我这里使用的是WebMvcConfigurationSupport。

结果

接下来我们看看效果,随便打一个我们的接口:

可以看到控制台顺利的打出了日志!

相关导读:

springboot 拦截器不生效

Springboot实现过滤器

深入理解拦截器与过滤器

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 点我我会动 设计师:上身试试 返回首页