Bootstrap

SpringBoot-12-拦截器

1、前言

SpringBoo2因为整合了SpringMVC,因此SpringMVC的拦截器也被SpringBoot收入囊中,拦截器(Interceptor)是SpringMVC的核心功能之一,是利用Spring的AOP的面向切面编程的思想,可以很方便的实现对登录权限控制、日志打印等功能。

2、HandlerInterceptor介绍

HandlerInterceptor:处理器拦截器(SpringBoot的web开发中,使用controller来处理web请求,而HandlerInterceptor用来处理controller拦截)
实现HandlerInterceptor接口中三个方法:

preHandle:预先处理方法,返回值为false拦截,true放行,放行之后执行controller对应方法中的内容
postHandle:controller方法返回之后执行postHandle,执行完成之后开始响应页面
afterCompletion:当页面渲染完成之后执行afterCompletion

3、实现

3.1、实现HandlerInterceptor接口

@Component
public class TokenInterceptor implements HandlerInterceptor {


    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {


        String token = request.getHeader("token");
        //token 不能为空,写死123 做测试
        if(StringUtils.isBlank(token) || !"123".equals(token)){
            throw new Exception("token不能为空");
        }
        return true;
    }

}

3.2、加入配置

@Configuration
public class WebMvcConfiguration extends WebMvcConfigurationSupport {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new TokenInterceptor())
                .addPathPatterns("/**")
                .order(1);
    }
}

4、注意点

  1. 在注册拦截器的时候 配置拦截路径的addPathPatterns参数为可变长参数,就意味着可以接受String的数组,可以配置多个参数
  2. 在不做任何设置的时候,多个拦截器的执行顺序和注册的顺序有关,先注册的先执行也可以通过Order方法来设置 执行的顺序 值越小越先执行

总结

本文章配套视频地址 https://www.bilibili.com/video/BV1pt4y1x7nf/

以上教程示例源码
链接:https://pan.baidu.com/s/1qz1Vj4LodnfK40w4D8dQMw
提取码:78m3

如有问题,可以加我公众号进行技术交流
在这里插入图片描述
老姚,带你学习先进的分布式技术、架构技术、运维技术,干货满满

;