JWT进行请求头校验

JWT请求头校验

这里进行请求头校验,我们首先要添加过滤器JwtAuthenticationFilter,到SpringSecurity默认提供的过滤器链中。

为什么要添加过滤器?

是为了在请求到达控制器之前进行身份验证和授权处理Spring Security默认提供的过滤器链是一组预定义的过滤器,用于处理各种安全相关的任务,比如身份验证、授权、会话管理等。这些过滤器按照特定的顺序被调用,以确保请求的安全性。将JwtAuthenticationFilter加入到过滤器链中,可以使请求在进入控制器之前经过自定义的身份验证和授权逻辑。这样可以保护你的API免受未经身份验证或未授权的访问,确保只有合法的用户才能访问受保护的资源。

创建过滤器

创建filter包,在包下创建JwtAuthenticationFilter

这里就是先获取请求头内令牌的内容,再调用工具类的方法对令牌进行解析,方法内部校验令牌的合法与解析,将jwt令牌转化成UserDetails类型,用于往UsernamePasswordAuthenticationToken类中包装用户基本信息,再封装来自请求的详细身份验证信息,例如 IP 地址、会话 ID 等;最后,将认证对象设置到当前的安全上下文中,这样就代表验证完成了。再调下一个用过滤器方法。

这里toUser中密码随便写的原因是,我们不用password,在UsernamePasswordAuthenticationToken第二个参数是凭证,就是密码之类的,我们不需要,所以传null。

添加过滤器

回到SecurityConfiguration配置类,我们将他引入,并将其添加在验证用户名密码的过滤器之前

测试

创建TestController,进行简单测试

登录获取token

测试成功,不要忘了加Bearer 哦。

我们不输入值,发现不是json格式的,我们进行完善

完善

回到SecurityConfiguration配置类,添加配置,conf.accessDeniedHandler(this::accessDenied);是登录进去,但没有权限访问一些页面的处理器,其他没有什么要注意的,也可以把这些处理器写成一个,那样就清爽多了,但我懒,代码就不贴了。

在RestBean中又封装俩方法

相关推荐
小杍随笔8 分钟前
【Rust Cargo 目录迁移到 D 盘:不改变安装路径和环境变量的终极方案】
开发语言·后端·rust
qq_2546744121 分钟前
Cisco Nexus 9504交换机上
java·linux·服务器
咕噜企业分发小米23 分钟前
腾讯云在多云管理工具上如何实现合规性要求?
java·云计算·腾讯云
invicinble1 小时前
关于对后端开发工程师,在项目层面的基本需求与进阶方向
java
懒鸟一枚1 小时前
Java17新特性详解
java
戌中横1 小时前
JavaScript 对象
java·开发语言·javascript
crossaspeed1 小时前
面向对象的三大特征和反射(八股)
java·开发语言
zfj3211 小时前
java synchronized关键字用法和底层原理
java·开发语言·轻量级锁·重量级锁·偏向锁·线程同步
梵高的代码色盘1 小时前
互联网大厂Java求职面试实录与技术深度解析
java·spring·缓存·微服务·面试·互联网大厂·技术深度
沐雨风栉1 小时前
用 Kavita+cpolar 把数字书房装进口袋
服务器·开发语言·数据库·后端·golang