思路
用户执行登录,注册等操作时,后端会生成一个token放入cookie中返回给前端,同时保存到redis中, 前端后续涉及验证token的http请求都需要在header中携带token和用户userId, 后端设置interceptor拦截指定请求,拿到header中的token, 后端通过 userId去redis中查找,如果查到并且二者匹配的上,次请求通过拦截,否则http请求无法到达controller
image-20200629113855412
拦截器 vs 过滤器
过滤器和拦截器有相似之处,都能对 Servlet 请求二次加工。但是过滤器并不是 SpringBoot 规范中的概念,事实上,过滤器是 Servlet 规范中的事物。
因此过滤器和拦截器的最大区别就是他们存在的空间是不一样的。
Filter 拦截器是 Servlet 中的规范,它可不依赖于 Spring,它是由 Servlet 容器 Filter 每个请求和响应。它可以在请求到达 Servlet 之前就处,因此 Filter 也总是优先于 Interceptor 执行。
img
nterceptor 过滤器是工作在 Spring 容器中的,由 Spring 所控制,因此能和 Spring 紧密的结合,在 Spring 中使用拦截器,处理拦截行为更方便,事实上 Filter 能做的事情,Interceptor 也都能实现。
img
拦截器和过滤器执行时机
IjOIC
springboot 过滤器使用
https://www.baeldung.com/spring-boot-add-filter
@Component
@Order(1)
public class TransactionFilter implements Filter {
private static final Logger LOG