![842cadb526433f44f750208ee4ad9624.png](https://i-blog.csdnimg.cn/blog_migrate/238a2ad0792934ce725989914d9e5228.jpeg)
1、maven 依赖版本
注意:本次示例的 spring-boot-starters 的版本是 2.1.13
![cb6c37e0aebd20085d4a3c171daeef6e.png](https://i-blog.csdnimg.cn/blog_migrate/c5aad0783501ec5a84f4fe2d7d278ab3.jpeg)
2、实现步骤
① 实现配置类
implements WebMvcConfigurer
② 实现拦截器
LoginInterceptor extends HandlerInterceptorAdapter
③ 把拦截器添加到配置类中
④ 添加需要拦截的请求
⑤ 添加需要排除的请求
3、实现配置类
![dd9889e3a4597a43369e483297ad1404.png](https://i-blog.csdnimg.cn/blog_migrate/2594ae1b8eca6b1cc7e326a9ff2ab107.jpeg)
WebConfigurer
4、拦截器
![f16f293492f503e4b85372e079f6966b.png](https://i-blog.csdnimg.cn/blog_migrate/3db1b195db4c42daa87e408f0e60154c.jpeg)
① preHandle 方法是进行处理器拦截用的,顾名思义,该方法将在 Controller 处理之前进行调用
② postHandle 在 Controller 的方法调用之后执行,但是它会在 DispatcherServlet 进行视图的渲染之前执行
③ afterCompletion 该方法将在整个请求完成之后,也就是 DispatcherServlet 渲染了视图执行(这个方法的主要作用是用于清理资源的)
![423e529a4da2df52fc0e43aa81303af2.png](https://i-blog.csdnimg.cn/blog_migrate/797c3df38a05202f36535ac3ecae6c8b.jpeg)
LoginInterceptor
5、有时,希望链接不被拦截,可以使用自定义注解
![2dd45aa3561a31f7790b14c5496882e3.png](https://i-blog.csdnimg.cn/blog_migrate/029ed34c28f0114c56da4ecfc3b2d03c.jpeg)
自定义注解LoginRequired
在 LoginInterceptor 开始添加如下代码
![a251accedf51ebccf1651a16c3cb9fc8.png](https://i-blog.csdnimg.cn/blog_migrate/1dc241443e50607f39d481dce6c06db6.jpeg)
LoginInterceptor
注意:经过研究发现,只有当 GET 请求是请求静态文件时 (在 spring 配置文件里会配置静态文件的 URI),handler 的实际类型会是 DefaultServletHttpRequestHandler,此时强制转换就会报错。需要加这行代码判断,handler instanceof HandlerMethod 。
欢迎关注 @Python大星 ,一个会点 Python 的 Java 程序员。如果你有更好的想法,欢迎留言,一起探讨,想说你就说啊!后面继续分享Java的相关开发,人少就散了吧!
@Python大星 | 文
![3d66758f1a6f099cd46f267962af95ff.png](https://i-blog.csdnimg.cn/blog_migrate/596d4cf456c55f9007c63bd54898eb05.jpeg)