java 拦截器_为啥访问受限?看看 SpringBoot 中的拦截器

842cadb526433f44f750208ee4ad9624.png

1、maven 依赖版本

注意:本次示例的 spring-boot-starters 的版本是 2.1.13

cb6c37e0aebd20085d4a3c171daeef6e.png

2、实现步骤

① 实现配置类

implements WebMvcConfigurer

② 实现拦截器

LoginInterceptor extends HandlerInterceptorAdapter

③ 把拦截器添加到配置类中

④ 添加需要拦截的请求

⑤ 添加需要排除的请求


3、实现配置类

dd9889e3a4597a43369e483297ad1404.png

WebConfigurer

4、拦截器

f16f293492f503e4b85372e079f6966b.png

① preHandle 方法是进行处理器拦截用的,顾名思义,该方法将在 Controller 处理之前进行调用

② postHandle 在 Controller 的方法调用之后执行,但是它会在 DispatcherServlet 进行视图的渲染之前执行

③ afterCompletion 该方法将在整个请求完成之后,也就是 DispatcherServlet 渲染了视图执行(这个方法的主要作用是用于清理资源的)

423e529a4da2df52fc0e43aa81303af2.png

LoginInterceptor

5、有时,希望链接不被拦截,可以使用自定义注解

2dd45aa3561a31f7790b14c5496882e3.png

自定义注解LoginRequired

在 LoginInterceptor 开始添加如下代码

a251accedf51ebccf1651a16c3cb9fc8.png

LoginInterceptor

注意:经过研究发现,只有当 GET 请求是请求静态文件时 (在 spring 配置文件里会配置静态文件的 URI),handler 的实际类型会是 DefaultServletHttpRequestHandler,此时强制转换就会报错。需要加这行代码判断,handler instanceof HandlerMethod 。


欢迎关注 @Python大星 ,一个会点 Python 的 Java 程序员。如果你有更好的想法,欢迎留言,一起探讨,想说你就说啊!后面继续分享Java的相关开发,人少就散了吧!

@Python大星 | 文

3d66758f1a6f099cd46f267962af95ff.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值