首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SpringBoot 中对拦截器的简单使用

优质文章,第一时间送达

明确需求

我们的部分接口需要访问者具有相应的权限才能进行相应的访问,即需要有正确的通行密码才能放行。看到这个需求,相应大家脑海中瞬间浮现出一个词 – 拦截器,确实,我们可以使用拦截器来实现这个需求,下面就让我来带领大家一起完成这个任务吧!

第一步:实现一个注解

首先,我们先实现一个注解,这个注解可以被加在方法上面,其主要功能如下:对于加上了这个注解的接口,会对其进行权限校验,通过才能执行下面的逻辑,否则会直接抛出异常。

实现接口

我们的接口逻辑很简单,对于传入的字符串参数,稍作修改便直接返回。而我们的接口使用了之前定义的 @Judge 注解,意味着该接口需要进行校验。

实现一个拦截器

实现拦截器比较简单,既可以实现接口 HandlerInterceptor ,也可以继承抽象类 HandlerInterceptorAdapter,在这一步博主选择了实现接口。

我们先来看看这个 HandlerInterceptor 接口是何方神圣。

preHandle:在业务处理器处理请求之前被调用,可用于编码、安全控制、权限校

postHandle:在业务处理器处理请求执行完成后,生成视图之前执行

afterCompletion:在 DispatcherServlet 完全处理完请求后被调用,可用于清理资源

明白了 HandlerInterceptor 的构造,我们便可以使用这个接口了。我们定义一个拦截器,该拦截器对于带有 Judge 注解的请求,会进行判断,若密码不为 happy,会直接抛出异常,其余情况均会放行。

注册拦截器

然后把我们前面写好的拦截器注册一下

这样子,我们的需求就已经实现了,接下来我们测试一下。

测试

在浏览器中我们输入以下 URL:

localhost:8080/test?judgePassword=happy&name=fdg

返回结果如下,可见对于添加了 @Judge 注解的接口,若 judgePassword 设置为 happy,拦截器会放行。

然后我们在浏览器输入以下 URL:

http://localhost:8080/test?judgePassword=not&name=fdg

返回结果如下,可见对于添加了 @Judge 注解的接口,若 judgePassword 设置不为 happy,拦截器会抛出异常。

猜你还想看

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200909A0912900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券