2023-10 最新jsonwebtoken-jjwt 0.12.3 基本使用
导入依赖
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.12.3</version></dependency>
包括了下面三个依赖, 所以导入上面一个就OK了
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.12.3</version>
</dependency>
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.12.3</version><scope>runtime</scope>
</dependency>
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId> <!-- or jjwt-gson if Gson is preferred --><version>0.12.3</version><scope>runtime</scope>
</dependency>
之前很多方法都弃用了, 好多博文也还是用的废弃的方法
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;
import io.jsonwebtoken.security.SecureDigestAlgorithm;import javax.crypto.SecretKey;
import java.sql.Timestamp;
import java.time.Instant;
import java.util.Date;
import java.util.UUID;/*** @author Tiam* @date 2023/10/23 16:38* @description*/
public class TokenUtil {/*** 过期时间(单位:秒)*/public static final int ACCESS_EXPIRE = 60;/*** 加密算法*/private final static SecureDigestAlgorithm<SecretKey, SecretKey> ALGORITHM = Jwts.SIG.HS256;/*** 私钥 / 生成签名的时候使用的秘钥secret,一般可以从本地配置文件中读取,切记这个秘钥不能外露,只在服务端使用,在任何场景都不应该流露出去。* 一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了。* 应该大于等于 256位(长度32及以上的字符串),并且是随机的字符串*/private final static String SECRET = "secretKey";/*** 秘钥实例*/public static final SecretKey KEY = Keys.hmacShaKeyFor(SECRET.getBytes());/*** jwt签发者*/private final static String JWT_ISS = "Tiam";/*** jwt主题*/private final static String SUBJECT = "Peripherals";/*这些是一组预定义的声明,它们 不是强制性的,而是推荐的 ,以 提供一组有用的、可互操作的声明 。iss: jwt签发者sub: jwt所面向的用户aud: 接收jwt的一方exp: jwt的过期时间,这个过期时间必须要大于签发时间nbf: 定义在什么时间之前,该jwt都是不可用的.iat: jwt的签发时间jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击*/public static String genAccessToken(String username) {// 令牌idString uuid = UUID.randomUUID().toString();Date exprireDate = Date.from(Instant.now().plusSeconds(ACCESS_EXPIRE));return Jwts.builder()// 设置头部信息header.header().add("typ", "JWT").add("alg", "HS256").and()// 设置自定义负载信息payload.claim("username", username)// 令牌ID.id(uuid)// 过期日期.expiration(exprireDate)// 签发时间.issuedAt(new Date())// 主题.subject(SUBJECT)// 签发者.issuer(JWT_ISS)// 签名.signWith(KEY, ALGORITHM).compact();}}
参考:
- https://github.com/jwtk/jjwt
- https://jwt.io/
相关文章:
2023-10 最新jsonwebtoken-jjwt 0.12.3 基本使用
导入依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.12.3</version></dependency>包括了下面三个依赖, 所以导入上面一个就OK了 <dependency><groupId>io.jsonwe…...

云起无垠典型案例入选《2023软件供应链安全洞察》报告
近日,历时6个月,由ISC编制的《2023软件供应链安全洞察》报告(以下简称《报告》)正式对外发布。《报告》围绕软件供应链安全现状、技术内核、治理指南、落地实践展开,以期为行业从业者提供有价值的信息和洞见࿰…...
怎么从休学证明中取出休学原因(python自动化办公,涉及word和excel)
怎么从休学证明中取出休学原因(python自动化办公,涉及word和excel) 本代码偏向处理高校教务处的工作 休学或请假模板如下: 休学证明(此联存教务办)编号:休202323 计算机系23级计算机科学与技术…...

C语言 定义一个函数,并调用,该函数中打印显示直角三角形
#include<stdio.h> void chengfabiao() {for (int i 1; i < 5; i){for (int j 1; j < i; j){printf("*");} printf("\n");} } int main(int argc,const char *argv[]) {chengfabiao();return 0; }...

Doceker-compose——容器群集编排管理工具
目录 Docker-compose 1、Docker-compose 的三大概念 2、YAML文件格式及编写注意事项 1)使用 YAML 时需要注意下面事项 2)ymal文件格式 3)json格式 3、Docker Compose配置常用字段 4、Docker-compose的四种重启策略 5、Docker Compos…...
Redis 与 MySQL 一致性 实现方案
正常情况下的流程是:请求来了,先检查 Redis 有没有数据,有返回;没有便查询 MySQL 然后 放入 Redis。 此时,如果 MySQL 的数据发生了变化,所以需要同步到 Redis 中。 解决方法:MySQL 中的数据更新…...

运维 | 使用 Docker 安装 Jenkins | Jenkins
运维 | 使用 Docker 安装 Jenkins | Jenkins 前言 本期内容主要是为了学习如何通过 Docker 安装Jenkins,仅作为记录与参考,希望对大家有所帮助。 准备工作 系统:CentOS 7.9配置:4c8g 快速安装 下面以 Docker 方式安装 Jenkin…...

linux-磁盘应用
目录 一、磁盘内容简述 1、一些基本概念 2、分区简述 3、常见文件系统 4、linux硬盘文件 二、对linux系统进行分区 1、用fdisk进行分区 2、用parted进行分区 一、磁盘内容简述 1、一些基本概念 - 扇区大小:512Btyes,0.5KB - 磁盘最小存储单位&…...

java版直播商城平台规划及常见的营销模式 电商源码/小程序/三级分销+商城免费搭建
涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …...
软考高级之系统架构师之软件工程
软件工程 面向对象设计原则 单一职责:设计目的单一的类开闭原则;对扩展开放,对修改关闭里氏替换:子类可以替代父类依赖倒置:要依赖于抽象,而不是实现。要针对接口编程,不要针对实现编程接口隔…...

SpringBoot集成与应用Neo4j
文章目录 前言集成使用定义实体配置定义Repository查询方法方式一:Query方式二:Cypher语法构建器方式三:Example条件构建器方式四:DSL语法 自定义方法自定义接口继承自定义接口实现自定义接口neo4jTemplateNeo4jClient 自定义抽象…...
做人,不一定要风风光光,但一定要堂堂正正。处事,不一定要尽善尽美,但一定要问心无愧。
做人,不一定要风风光光,但一定要堂堂正正。处事,不一定要尽善尽美,但一定要问心无愧。以真诚的心,对待身边的每一个人。以感恩的心,感谢拥有的一切。 未来,不是穷人的天下,也不是富人…...

51单片机实验:数码管动态显示00-99
1、实验要求 利用STC89C52RC单片机开发板实现:使用2位数码管循环显示00-99,每次间隔1s,并且当计数到20时,则蜂鸣器鸣响1次。 2、实验分析 程序实现分析: 1、定义数码管位选引脚(P2.4、P2.5、P2.6、…...

【教3妹学编程-java实战5】结构体字段赋值的几种方式
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 2哥 :3妹,考考你,你知道java结…...
阿里蚂蚁淘宝等多次一面面试面经
一面采用电话面试笔试链接做算法题(可能开视频)的形式 蚂蚁第一次: 自我介绍 技术一般使用开源技术还是自己研发 开源spring cloud等 流水线用来做什么 用户是什么人 应用场景 是toB的对吧 学到的最前沿的技术有哪些 gateway全局权限…...

UE4 中可全局获取的变量(例如游戏实例、玩家控制器等) 详解
目录 0 引言1 全局对象(全局变量)1.1 游戏实例 GameInstance1.1.1 介绍1.1.2 使用 GameInstance 1.2 玩家控制器 PlayerController1.3 游戏世界类 UWorld 🙋♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏&…...

c#使用ExifLib库提取图像的相机型号、光圈、快门、iso、曝光时间、焦距信息等EXIF信息
近期公司组织了书画摄影比赛,本人作为摄影爱好者,平时也会拍些照片,这次比赛当然不能错过。为了提高获奖概率,选了19张图像作为参赛作品。但是,摄影作品要提交图像的光圈、曝光时间等参数。一两张还可以通过电脑自带软…...

C++入门05—指针
1. 指针的基本概念 指针的作用: 可以通过指针间接访问内存 内存编号是从0开始记录的,一般用十六进制数字表示 可以利用指针变量保存地址 2. 指针变量的定义和使用 指针变量定义语法: 数据类型 * 变量名; 示例: …...

Go学习第十六章——Gin文件上传与下载
Go web框架——Gin文件上传与下载 1. 文件上传1.1 入门案例(单文件)1.2 服务端保存文件的几种方式SaveUploadedFileCreateCopy 1.3 读取上传的文件1.4 多文件上传 2. 文件下载2.1 快速入门2.2 前后端模式下的文件下载2.3 中文乱码问题 1. 文件上传 1.1 …...

2.MySQL的调控按钮——启动选项和系统变量
2.MySQL的调控按钮——启动选项和系统变量 1.启动选项和配置文件1.1 在命令行上使用选项1.2 配置文件中使用选项1.2.1 配置文件路径1.2.2 配置文件的内容1.2.3 特定 MySQL 版本的专用选项组1.2.4 配置文件的优先级1.2.5 同一个配置文件中多个组的优先级1.2.6 defaults-file 的使…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...

什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
32单片机——基本定时器
STM32F103有众多的定时器,其中包括2个基本定时器(TIM6和TIM7)、4个通用定时器(TIM2~TIM5)、2个高级控制定时器(TIM1和TIM8),这些定时器彼此完全独立,不共享任何资源 1、定…...