当前位置: 首页 > 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 简单模式)
    @Bean
    public StpLogic getStpLogicJwt() {
        return new StpLogicJwtForSimple();
    }
}

3.4 自定义jwt算法

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

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

4.结语

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

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

相关文章:

  • 每天学一个 Linux 命令(12):chown
  • flutter 项目结构目录以及pubspec.ymal等文件描述
  • /////////
  • [MySQL初阶]MySQL库的操作
  • 位置编码(Positional Encoding, PE)的作用
  • 开源AI模型落地教程:如何在个人电脑安装并运行QwQ-32B大模型
  • 【MyBatis】深入解析 MyBatis:关于注解和 XML 的 MyBatis 开发方案下字段名不一致的的查询映射解决方案
  • 【Linux】动静态库知识大梳理
  • Android Gradle、Android Gradle Plugin、BuildTool关系
  • 真实笔试题
  • Smallworld Geo Network Management(GNM):电力-通信-公共设施GIS平台
  • 树莓派 5 部署 OMV(OpenMediaVault)
  • 解决docker的ubuntu系统中文乱码问题
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(十)
  • 深度学习 Deep Learning 第16章 结构化概率模型
  • STM32单片机入门学习——第10节: [4-2] OLED显示屏
  • 图扑 HT 电缆厂 3D 可视化管控系统深度解析
  • Tmux 核心操作速查指南
  • 解释回溯算法,如何应用回溯算法解决组合优化问题?
  • Android Settings 有线网设置界面优化
  • 基于springboot的考研成绩查询系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 【C++】Cplusplus进阶
  • 2025徘徊与坚守:在传统与变革间寻找自己
  • 启服云专利管理系统:铸就知识产权保护的坚固壁垒
  • 基于YOLOv8的热力图生成与可视化:支持自定义模型与置信度阈值的多维度分析
  • Python第七章08:导入自定义(个性化)模块
  • 程序化广告行业(55/89):DMP与DSP对接及数据统计原理剖析
  • 06-公寓租赁项目-后台管理-公寓管理篇
  • tomcat 屏蔽版本号
  • 2024青少年信息素养大赛 C++智能算法初赛 小学组 全年级 真题答案详细解析