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