当前位置: 首页 > news >正文

SpringBoot项目Sa-token框架整合JWT

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
——⏳[更新]:2025.4.3
——🥰本人技术有限,如果有不对指正需要更改或者有更好的方法,欢迎到评论区留言。

http://www.mrgr.cn/news/97025.html

相关文章:

  • 【Linux网络与网络编程】03.UDP Socket编程
  • 虚拟电商-话费充值业务(六)话费充值业务回调补偿
  • 机器学习学习笔记
  • SpringBoot+vue前后端分离整合sa-token(无cookie登录态 详细的登录流程)
  • TRDI 公司的RiverPro 和 RioPro ADCP 用户指南
  • 生成对抗网络(GAN)详解(代码实现)
  • 【C++】Cplusplus进阶
  • 2025徘徊与坚守:在传统与变革间寻找自己
  • 基于卷积神经网络CNN实现电力负荷多变量时序预测(PyTorch版)
  • RabbitMQ高级特性1
  • lodash库介绍(一个现代JavaScript实用工具库,提供模块化、性能优化和额外功能)JavaScript库(防抖、节流、函数柯里化)JS库
  • 【从零实现Json-Rpc框架】- 项目实现 - 服务端主题实现及整体封装
  • 前端Uniapp接入UviewPlus详细教程!!!
  • [Linux]从零开始的vs code交叉调试arm Linux程序教程
  • 容器的CPU
  • CAD插入属性块 弹窗提示输入属性值——CAD知识讲堂
  • GenerationMixin:_sample方法(GenerationMode.SAMPLE, GenerationMode.GREEDY_SEARCH)
  • [C语言入门] 结构体
  • 接口自动化学习二:session自动管理cookie
  • Maven+Spring实现后端开发