JJWT快速入门

news2024/11/22 8:41:42

本篇介绍使用 JJWT(Java JWT)库来生成 JWT Token,步骤如下:

  1. 添加依赖:
    在项目中添加 JJWT 依赖项。对于 Maven 项目,可以在 pom.xml 文件中添加以下依赖项:
  <dependency>
       <groupId>io.jsonwebtoken</groupId>
       <artifactId>jjwt-api</artifactId>
       <version>0.11.2</version>
   </dependency>
   <dependency>
       <groupId>io.jsonwebtoken</groupId>
       <artifactId>jjwt-impl</artifactId>
       <version>0.11.2</version>
       <scope>runtime</scope>
   </dependency>
   <dependency>
       <groupId>io.jsonwebtoken</groupId>
       <artifactId>jjwt-jackson</artifactId>
       <version>0.11.2</version>
       <scope>runtime</scope>
   </dependency>
  1. 创建 JWT Token:
    下面是使用 JJWT 库创建 JWT Token 的示例代码:
	@Test
	public void genJwtToken() {
		Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
		String jwtToken = Jwts.builder().setSubject("JWT Demo") // 设置主题(Subject)
				.claim("userId", "oscar").claim("role", "admin").signWith(key) // 使用指定的算法和密钥签名
				.compact();
		System.out.println("jwtToken="+jwtToken);
	}

在上述示例中,设置了以下信息:

  • 主题(Subject)为 “JWT Demo”
  • 自定义声明(Claim)为 “userId” 和 “oscar”
    使用 signWith() 方法指定签名算法(这里使用 HS256)和密钥进行签名。最后使用 compact() 方法生成 JWT Token。
    产生的Token如下图所示:

在这里插入图片描述

  1. 调整 Token 有效期(可选):
    默认情况下,生成的 JWT Token 是不带过期时间的。如果需要设置 Token 的有效期,可以使用 setExpiration() 方法来指定有效期,示例如下:
	@Test
	public void tokenWithExpired() {
		Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
		Date expiration = new Date(System.currentTimeMillis() + 3600 * 1000); // 设置过期时间为1小时后
		String jwtToken = Jwts.builder().setSubject("JWT Demo") // 设置主题(Subject)
				.setExpiration(expiration) //设置过期时间
				.claim("userId", "oscar").claim("role", "admin")
				.signWith(key) // 使用指定的算法和密钥签名
				.compact();
		System.out.println("jwtToken="+jwtToken);
	}

在上述示例中,使用 setExpiration() 方法设置了 Token 的过期时间为当前时间的 1 小时后。

在线完整演示代码

  • https://github.com/osxm/java-ency/blob/master/src/main/java/com/osxm/je/topic/security/JwtDemo.java


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/841390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通用FIR滤波器的verilog实现(内有Lowpass、Hilbert参数生成示例)

众所周知&#xff0c;Matlab 中的 Filter Designer 可以直接生成 FIR 滤波器的 verilog 代码&#xff0c;可以方便地生成指定阶数、指定滤波器参数的高通、低通、带通滤波器&#xff0c;生成的 verilog 代码也可以指定输入输出信号的类型和位宽。然而其生成的代码实在算不上美观…

uniapp实现支付宝菜单展开与收起

需求实现支付宝类似的效果&#xff1a; 思路&#xff1a; 1.首先建立展开收起按钮&#xff0c;这里使用的是uview里面的icon图标。 2.其次建立展开菜单内容&#xff0c;这里只演示了文本信息&#xff0c;后期引入首页应用。 3.最后写js逻辑&#xff0c;展开收起时改变盒子高度和…

windows .gitignore 加入文件名后 依然可以从git status中看到文件问题

最近在学git&#xff0c;对着b站的视频操作&#xff0c;结果很简单的添加.gitignore文件操作&#xff0c;up主的正常隐藏&#xff0c;我的却一直出问题。 百思不得其解&#xff0c;网上各种啥啥啥清缓存都没讲到点上。 最后发现是.gitignore文件有问题&#xff0c;windows默认…

【网络基础知识铺垫】

文章目录 1 :peach:计算机网络背景:peach:1.1 :apple:网络发展:apple: 2 :peach:协议:peach:2.1 :apple:协议分层:apple:2.2 :apple:OSI七层模型:apple:2.3 :apple:TCP/IP模型:apple:2.4 :apple:TCP/IP模型与操作系统的关系:apple: 3 :peach:网络传输基本流程:peach:4 :peach:网…

Autoware.ai1.14.0自动驾驶-Demo运行

Autoware.ai1.14.0自动驾驶-Demo运行 数据准备 下载数据&#xff1a; wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_data.tar.gz wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz一定要注意解压文件是在.auto…

.dex文件转换成.class文件,.class文件转成java文件

.dex文件转换成.class文件 什么是.dex文件 dex文件是Android系统的可执行文件,包含应用程序的全部操作指令以及运行时数据。 由于dalvik是一种针对嵌入式设备而特殊设计的java虚拟机,所以dex文件与标准的class文件在结构设计上有着本质的区别。 当java程序编译成class后,还需…

5.PyCharm基础使用及快捷键

在前几篇文章中介绍了PyCharm的安装和汉化,本篇文章一起来看一下PyCharm的基本用法和一些快捷键的使用方法。 本篇文章PyCharm的版本为PyCharm2023.2 新建项目和运行 打开工具,在菜单中——文件——新建项目 选择项目的创建位置(注意最好不要使用中文路径和中文名项目名称…

Java私有仓库Nexus搭建部署

Java私有仓库Nexus搭建部署 需求分析 为什么要搭建部署Nexus私有仓库&#xff0c;有什么用&#xff0c;用来干什么&#xff0c;怎么用&#xff0c;也许是大家看到这篇文章的第一个反应和疑惑&#xff0c;这里给大家先笼统的做一个介绍&#xff1a; 依赖管理&#xff1a;在Java…

八、Spring 整合 MyBatis

文章目录 一、Spring 整合 MyBatis 的关键点二、Spring 整合 MyBatis 的步骤2.1 创建 Maven 项目&#xff0c;并导入相关依赖2.2 配置 Mybatis 部分2.3 配置 Spring 部分2.3 配置测试类 一、Spring 整合 MyBatis 的关键点 1、 将 Mybatis 的 DataSource (数据来源)的创建和管理…

如何恢复已删除的 PDF 文件 - Windows 11、10

在传输数据或共享专业文档时&#xff0c;大多数人依赖PDF文件格式&#xff0c;但很少知道如何恢复意外删除或丢失的PDF文件。这篇文章旨在解释如何有效地恢复 PDF 文件。如果您身边有合适的数据恢复工具&#xff0c;PDF 恢复并不像看起来那么复杂。 便携式文档格式&#xff08…

SpringBoot整合Sfl4j+logback的实践

一、概述 对于一个web项目来说&#xff0c;日志框架是必不可少的&#xff0c;日志的记录可以帮助我们在开发以及维护过程中快速的定位错误。slf4j,log4j,logback,JDK Logging等这些日志框架都是我们常见的日志框架&#xff0c;本文主要介绍这些常见的日志框架关系和SpringBoot…

博客项目测试报告

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 一、项目背景二、项目功能三、测试计划一&#xff09;功能测试二&#xff09;自动化测试三&#xff09;性能测试编写性能测试…

嵌入式Linux驱动开发系列五:Linux系统和HelloWorld

三个问题 了解Hello World程序的执行过程有什么用? 编译和执行&#xff1a;Hello World程序的执行分为两个主要步骤&#xff1a;编译和执行。编译器将源代码转换为可执行文件&#xff0c;然后计算机执行该文件并输出相应的结果。了解这个过程可以帮助我们理解如何将代码转化…

STM32 CubeMX USB_(HID 鼠标和键盘)

STM32 CubeMX STM32 CubeMX USB_HID&#xff08;HID 鼠标和键盘&#xff09; STM32 CubeMX前言 《鼠标》一、STM32 CubeMX 设置USB时钟设置USB使能UBS功能选择 二、代码部分添加代码鼠标发送给PC的数据解析实验效果 《键盘》STM32 CubeMX 设置&#xff08;同上&#xff09;代码…

检测文本是否由AI生成,GPT、文心一言等均能被检测

背景 目前很多机构推出了ChatGPT等AI文本检测工具&#xff0c;但是准确率主打一个模棱两可&#xff0c;基本和抛硬币没啥区别。 先说结论&#xff0c;我们对比了常见的几款AI检测工具&#xff0c;copyleaks检测相比较而言最准确。 检测文本 AI文本片段1 来源&#xff1a;G…

人工智能的缺陷

首先从应用层面理解什么是人工智能&#xff0c;目前人工智能主流应用面包括&#xff1a;自然语言处理领域&#xff0c;代表为chatgpt&#xff0c;我们能用其进行日常交流&#xff0c;问题答疑&#xff0c;论文书写等。计算机视觉领域&#xff0c;代表为人脸识别&#xff0c;现在…

Metashape和PhotoScan中文版软件下载安装地址

Metashape的点云生成功能 Metashape具有强大的点云生成功能&#xff0c;可以将图像转换为精确的三维点云数据。点云数据是进行三维建模和地形分析的重要基础。 在使用Metashape时&#xff0c;用户可以通过使用图像对齐功能生成点云数据。软件根据对齐后的图像生成稠密的点云&a…

c语言-qsort函数

目录 一、函数介绍 二、qsort函数的使用 1、对int类型数组排序 2、对char类型排序 3、对浮点型排序 4.比较字符串 4.1按首字母排序 4.2按长度排序 4.3按字典顺序 5.结构体排序 5.1 多级排序 三、模拟实现qsort函数 【冒泡排序的实现】 【主函数部分】 【代码详解…

二叉树的构建(java基于数组)

前言 二叉树在算法中是经常考察的点&#xff0c;但是要在本地测试的话&#xff0c;就必须自己构建二叉树。在算法题中&#xff0c;一般给我们的都是一个数组&#xff0c;或者是二叉树的形状。因此&#xff0c;需要将数组转换为二叉树&#xff0c;这样才能测试出自己的代码是否符…

Linux文本处理工具和正则表达式

Linux文本处理工具和正则表达式 一.查看、截取和修改文本的工具 1.查看文本的工具 cat 最常用的文件查看命令&#xff1b;当不指明文件或者文件名为一杠’-时&#xff0c;读取标准输入。 cat [OPTION]... [FILE]... -A&#xff1a;显示所有控制符(tab键:^I;行结束符:$) -…