您的位置:首页 > 财经 > 产业 > 网页界面设计教程视频_宁波网站制作首推蓉胜网络好_深圳网络推广外包_windows优化大师有哪些功能

网页界面设计教程视频_宁波网站制作首推蓉胜网络好_深圳网络推广外包_windows优化大师有哪些功能

2025/4/10 23:25:59 来源:https://blog.csdn.net/weixin_74879735/article/details/146986419  浏览:    关键词:网页界面设计教程视频_宁波网站制作首推蓉胜网络好_深圳网络推广外包_windows优化大师有哪些功能
网页界面设计教程视频_宁波网站制作首推蓉胜网络好_深圳网络推广外包_windows优化大师有哪些功能

SpringBoot项目Sa-token框架整合JWT

  • 1.前言
  • 2.JWT是什么?
    • 2.1 JWT核心原理
    • 2.2 JWT核心优势
  • 3.项目整合JWT
    • 3.1 导入依赖
    • 3.2 配置文件进行配置
    • 3.3 注入jwt
    • 3.4 自定义jwt算法
  • 4.结语

😀大家好!我是向阳🌞,一个想成为优秀全栈开发工程师的有志青年!	
📔今天来说一说如何在SpringBoot项目Sa-token框架中整合JWT。

1.前言

上一章节链接:SpringBoot整合sa-token

在上一个篇章当中,我们在SpringBoot项目中整合了sa-token框架,并且实现了无cookie登录态(博客链接:SpringBoot整合sa-token),这一小节我们来整合我们来整合jwt,让我们的token更加安全。

2.JWT是什么?

2.1 JWT核心原理

JWT(JSON Web Token)是一种开放标准(RFC 7519),采用紧凑的URL安全方式传递声明信息,由三部分组成:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.   // Header(头部)
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.  // Payload(负载)
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c  // Signature(签名)

JWT结构解析

组成部分内容示例说明
Header{“alg”: “HS256”, “typ”: “JWT”}声明令牌类型和签名算法
Payload{“sub”: “123”, “name”: “Alice”, “exp”: 1735689600}携带业务相关声明
SignatureHMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload), secret)防篡改数字签名

2.2 JWT核心优势

  • 自包含性:Payload可存储用户基本信息,减少数据库查询
  • 防篡改验证:通过签名机制确保数据完整性
  • 跨语言支持:标准化的JSON数据处理
  • 时效控制:通过exp等标准声明自动过期
  • OAuth2.0友好:天然适配现代授权标准

3.项目整合JWT

3.1 导入依赖

首先我们引入依赖sa-token-jwt,sa-token框架与jwt进行了封装,让我们很容易的就可以生成jwt风格的token值。

<!-- Sa-Token 整合 jwt -->
<dependency><groupId>cn.dev33</groupId><artifactId>sa-token-jwt</artifactId><version>1.41.0</version>
</dependency>

3.2 配置文件进行配置

接下来我们在yml配置文件中进行配置。

sa-token:# 其他的配置不变,与上一章节一致...# jwt秘钥,这里的密钥填你自己的想填的就好jwt-secret-key: xiangyang

3.3 注入jwt

这里官方给了三种方式,建议选择第一种,功能没有缺失,自己看自己的需求进行筛选。

@Configuration
public class SaTokenConfigure {// Sa-Token 整合 jwt (Simple 简单模式)@Beanpublic StpLogic getStpLogicJwt() {return new StpLogicJwtForSimple();}
}

3.4 自定义jwt算法

/*** 自定义 SaJwtUtil 生成 token 的算法 */
@PostConstruct
public void setSaJwtTemplate() {SaJwtUtil.setSaJwtTemplate(new SaJwtTemplate() {@Overridepublic String generateToken(JWT jwt, String keyt) {System.out.println("------ 自定义了 token 生成算法");return super.generateToken(jwt, keyt);}});
}

到这里我们就已经整合完jwt了,我们这个时候再去调用之前的登录接口,生成的token值就是jwt风格了。

4.结语

下一章预告:我们在每次重启项目后我们就需要重新登录,我们该如何解决这个问题呢?

——👦[作者]:向阳256
——⏳[更新]:2024.3.22
——🥰本人技术有限,如果有不对指正需要更改或者有更好的方法,欢迎到评论区留言。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com