关于JWT令牌和过滤器以及拦截器的实现流程

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
云原生网关 MSE Higress,422元/月
简介: JWT令牌用于验证用户请求合法性,登录时通过Filter或Interceptor校验账号密码,生成JWT并返回给前端保存。请求时,后端通过解析令牌检查其完整性、时效性和合法性。Filter在请求处理前检查是否携带JWT,Interceptor的preHandle方法同样用于此目的。两者选择其一即可,拦截器配置更精确但稍复杂。

前言:首先讲jwt令牌,其实就是token,主要用于鉴别用户请求是不是合法的,怎么校验?给它标记!当用户登录时,通过过滤器或者拦截器对请求进行拦截,如果是登录请求,让用户登录,登录校验账号密码没问题了,给它制作个jwt令牌,让他拿着这个令牌返回前端,并且保存起来,后续只要在同一个浏览器且不跨域的情况下,token都会生效,每个请求打到后端都会对令牌进行解析,查看是否有效,有效指的是:token完整性,时效性,合法性,我们在生成令牌的时候会给这个令牌进行设置,以上就是关于令牌、过滤器、拦截器的由来

实质上,过滤器和拦截器功能相仿,只需要用到一个就行了,只是顺带讲了,勿要多疑!接下来看看代码实现吧

1.首先是jwt令牌的额制作和解析
image.png
signKey是签名,确保令牌数据不会被篡改(我是这么理解的,我不太确定哈哈哈),expire是有效时间,平时登录网页不都是登录之后一定时间就自动退出了吗,应该就是这玩意

2.然后看这个登录接口,这里在登录验证成功后调用了令牌制作的额方法并传递了“claims”,claims 参数是用于包含关于用户或其他实体的声明(statements)的JSON对象。这些声明可以是标准的(由JWT规范定义)或自定义的
image.png
那么以上步骤就实现了用户登录及令牌的发放,避免了用户在没有登录的情况下访问其他接口

再讲jwt令牌token,既然token有了,那我登录之后,从新开了个页面或者直接访问其他路径(没有跨域的情况下),你怎么校验我有没有登录呢,举个例子:后端服务本地启动后端口为8080,访问登录接口localhost:8080/login,登录之后token就生成并保存在前端浏览器了,每次请求就会携带这个token,但是现在我直接叉掉登录的页面,然后直接访问localhost:8080/emp,没有跨域,同一个服务,token也还在时效内,是不是就需要个东西拦截这个请求,然后解析token看是否合法?合法则直接给他访问,不合法则退回登录页面

先来看filter过滤器,实现Filter接口并重写所有方法,重点是第二个doFilter方法,他是在请求方法执行前执行的,也就是你执行登录请求,在登录的controller执行前,他会将你拦截,并进行逻辑处理,这里逻辑处理不就可以判断是不是登录接口了吗,如果是自然不用拦截了,如果不是就要看看是否携带token了,并检查是否合法有效,具体逻辑看代码吧
image.png

然后是怎么设置拦截哪些请求,看下图,就是这个注解,还可以用web.xml进行配置,注解的话加载Filter实现类上就行了
image.png

然后是拦截器,和过滤器80%相似,也是实现接口,这里是实现HandlerInterceptor,并重写方法,拦截器得的主要方法是preHandle,也是在方法执行前执行,下面处理逻辑的代码,就都一样了
image.png

然后也是设置拦截哪些请求,和过滤器不一样,他编写一个配置类来拦截,实现WebMvcConfigurer,然后可以设置拦截哪些请求和不拦截哪些请求,这点我觉得比过滤器好,更加精确,就是稍微麻烦点
image.png

下班了,赶着下班,有点糙,将就吧

目录
打赏
0
0
0
0
56
分享
相关文章
什么是用于REST API的JWT Bearer令牌以及如何通过代码和工具进行调试
在Web开发中,保护REST API至关重要,而JSON Web令牌(JWT)特别是JWT Bearer令牌,是一种高效方法。它通过紧凑、自包含的结构实现安全信息交换,提升用户体验。本文探讨JWT Bearer的基本概念、结构与实现,包括在Java中的应用步骤,以及使用Apipost和cURL进行测试的方法。JWT优势明显:无状态、互操作性强,适用于分布式系统。掌握JWT Bearer,可助开发者构建更安全、高效的API解决方案。
JWT令牌基础教程 全方位带你剖析JWT令牌,在Springboot中使用JWT技术体系,完成拦截器的实现 Interceptor (后附源码)
文章介绍了JWT令牌的基础教程,包括其应用场景、组成部分、生成和校验方法,并在Springboot中使用JWT技术体系完成拦截器的实现。
344 0
JWT令牌基础教程 全方位带你剖析JWT令牌,在Springboot中使用JWT技术体系,完成拦截器的实现 Interceptor (后附源码)
【Azure Developer】如何验证 Azure AD的JWT Token (JSON Web 令牌)?
【Azure Developer】如何验证 Azure AD的JWT Token (JSON Web 令牌)?
171 0
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
420 0
JWT令牌,JWT令牌的后续使用,在其他端口中使用的注意事项?如果你编写了JWT令牌的话,在下一次请求当中,都需要添加的,如果你已经配置好了WebConfig和Inter 就不用配了,添加了拦截器之后
JWT令牌,JWT令牌的后续使用,在其他端口中使用的注意事项?如果你编写了JWT令牌的话,在下一次请求当中,都需要添加的,如果你已经配置好了WebConfig和Inter 就不用配了,添加了拦截器之后
JWT令牌详解
JWT令牌详解
295 3
JWT解密:探秘令牌魔法与Java的完美交互
JWT解密:探秘令牌魔法与Java的完美交互
111 0
JWT解密:探秘令牌魔法与Java的完美交互