Spring Boot延续了Spring MVC提供的AOP风格拦截器,拥有精细的拦截处理能力,在Spring Boot中拦截器的使用更加方便。这里只是用登录的例子来展现拦截器的基本使用。拦截器用途很广,例如可以对URL路径进行拦截,也可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等。
在项目中创建interceptor包,并创建一个LoginInterceptor拦截器实现HandlerInterceptor接口。
一般用户登录功能我们可以这样实现:要么往session中写一个user,要么针对每一个user生成一个token。第二种方式更好,针对第二种方式,如果用户登录成功了,则每次请求的时候都会带上该用户的token;如果未登录成功,则没有该token,服务端可以通过检测这个token参数的有无来判断用户有没有登录成功,从而实现拦截功能。代码如下:
每一个拦截器都需要实现HandlerInterceptor接口,实现这个接口有3种方法,每种方法会在请求调用的不同时期完成,因为我们需要在接口调用之前拦截请求并判断是否登录成功,所以这里需要使用preHandle方法,在里面写验证逻辑,最后返回true或者false,确定请求是否合法。
(1)通过配置类注册拦截器。
创建一个配置类InterceptorConfig,并实现WebMvcConfigurer接口,覆盖接口中的addInterceptors方法,并为该配置类添加@Configuration注解,标注此类为一个配置类,让Spring Boot扫描得到,代码如下
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理