拦截器(详解)

拦截器是啥?

拦截器,就是用来拦截请求的,只有满足预设的代码才能访问对应的接口

在获取图书列表的时候,我们写了一个验证session的,只有登录才可以进行操作,但是这个只对获取图书列表生效,我们不只有这一个获取图书列表,我们还有增删改查,总不可能每一个都写一遍吧,那很累了

所以我们把这个共性的代码给抽离出去,变成公用的-拦截器

拦截器

定义拦截器

首先需要实现HandlerInterceptor接口,然后重写里面的方法

需要重写三个接口

Prehandle表示的是在方法执行之前启动的

Posthandle表示的是方法执行之后启动的

Aftercompletion表示的是当画面渲染好之后启动的(不常用)

注册配置拦截器

实现WebMvcConfigurer接⼝,并重写addInterceptors⽅法,在add中加入你之前自定义的拦截器即可,addpath部分加入的是拦截的访问,/**表示全部拦截

拦截

如果改为false,我们访问任何的资源都会被拦截,无法继续执行到下一步,只有是true的时候,才会被允许访问

这里的addpathpatterns表示的是拦截/**表示拦截的所有

Excludepathpatterns表示的是不拦截的

常见的拦截

拦截器执行过程

原本

用户 controller service mapper 数据库

加了拦截器

用户 拦截器 controller service mapper 数据库

加了拦截器,就会在执行controller执行之前,执行prehandle方法,返回false就会被拦截,返回true才可以继续执行

当返回true之后,就会执行posthandle方法,然后再执行aftercompletion方法,然后返回数据

举例

当我设置这个拦截器之后,如果有访问来了,这个时候他需要先经过我的拦截器的prehandle里面的代码,如果验证通过,那么就会可以访问,验证失败就会显示用户未登录

这里负责的是拦截请求的名单,负责把需要拦截的,不拦截的全部记下来,和前面的自定义的拦截器的验证代码进行配合

举例

当未登录去访问内部的东西

被拦截器拦截,只有登录之后获得session才可以对看到数据和对数据进行操作

成功

先登录之后,获得session之后才可以访问内部的资源

总结

拦截器的存在,是为了保护我们后端的安全,同时也是把我们每个部分都需要写的重复验证代码给提取出来,封装,让我们可以直接使用

逻辑

定义拦截器

实现我们自己需要拦截的逻辑

首先需要一个类去继承HandlerInterceptor接⼝,并重写其所有⽅法,这里的方法分为三个,一个是pre(执行代码前),一个是post(执行代码后),一个是after(渲染结束后),只有当pre里面我们写的代码执行成功之后,返回一个true,才会执行其他的下一步操作

注册配置拦截器

使用什么拦截器,拦截什么,什么不拦截

首先需要一个类去实现实现WebMvcConfigurer接⼝,并重写addInterceptors⽅法和excludePathPatterns方法,这里主要就是把你自己实现的拦截器放进来,然后把你要拦截的,放行的写进去,这样自定义的拦截器才知道要拦截什么,什么不拦截

大白话

这两个是相互配合的,一个负责的是验证什么,怎么验证,一个负责的是哪些需要验证,哪些不需要验证

相关推荐
白帽攻防录29 分钟前
SRC 挖洞:Roundcube 预认证 SQL 注入深度复盘,CVE-2026-48842 preg_replace 转义绕过怎么打穿邮件系统
网络·数据库·sql·网络安全·sql注入
꯭自꯭闭꯭1 小时前
达梦SQL优化相关
linux·运维·数据库·sql
shuoshuohaohao1 小时前
MyBatis 小知识点
java·spring·mybatis
对空六课1 小时前
支持注意力分析的热力图工具有哪些?
前端·数据库·数据分析
南京码讯光电技术有限公司2 小时前
How to Design an Antenna System for an Industrial WiFi Module
数据库·人工智能
lusklusklusk3 小时前
Oracle数据库基础之2_体系结构
数据库·oracle
可乐ea3 小时前
从第一性原理构建 AI Agent:提示词、工具、技能与记忆全解剖
数据库·人工智能·工具调用·ai智能体·提示词工程·agent开发·智能体记忆
东方护航数据恢复(深圳)3 小时前
医疗案例:HIS/PACS 数据库页损坏修复,医院不停诊完成恢复【东方护航数据恢复深圳店】
数据库·数据恢复·医疗·二次开盘
lusklusklusk4 小时前
Oracle数据库基础之11_Duplicate和Dataguard和RAC
数据库·oracle
苏supper5 小时前
Spring Boot多环境配置与打包运行
spring boot·后端·spring