使用Java生成JWT令牌的示例代码
更新时间:2024年04月09日 17:29:54 作者:临界点oc
json-web-token简称java web令牌,也称作JWT,是一种可以实现跨域身份验证身份的方案,jwt不加密传输数据,但能够通过数据前面验证数据的未被篡改,本文给大家介绍了如何使用Java生成JWT令牌,需要的朋友可以参考下
1. 在pom.xml中引入依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>2. 使用Jwts的相关方法生成令牌
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
class DemoApplicationTests {
/**
* 生成JWT令牌
*/
@Test
public void testGenJwt() {
Map<String, Object> claims = new HashMap<>();
claims.put("id", 1);
claims.put("name", "tom");
String jwt = Jwts.builder()
.signWith(SignatureAlgorithm.HS256, "itheima") // 签名算法
.setClaims(claims) // 自定义内容(载荷)
.setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)) // 设置令牌有效期为1小时
.compact();
System.out.println(jwt);
}
}
3. 把生成的令牌复制到JWT官网,查看原始数据

4. 基于Java代码解析生成的令牌
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
class DemoApplicationTests {
/**
* 生成JWT令牌
*/
@Test
public void testGenJwt() {
Map<String, Object> claims = new HashMap<>();
claims.put("id", 1);
claims.put("name", "tom");
String jwt = Jwts.builder()
.signWith(SignatureAlgorithm.HS256, "itheima") // 签名算法
.setClaims(claims) // 自定义内容(载荷)
.setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)) // 设置令牌有效期为1小时
.compact();
System.out.println(jwt);
}
/**
* 解析令牌
*/
@Test
public void testParseJwt() {
Claims claims = Jwts.parser()
.setSigningKey("itheima") // 指定签名密钥
// 解析令牌
.parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoidG9tIiwiaWQiOjEsImV4cCI6MTY3MDQ2NzIyNH0.jL02hIWc1fZBjzvFCTtW4ZlSJ424khsobogsq0X2KVc")
.getBody();
System.out.println(claims);
}
}
注意事项:
①JWT校验时使用的签名密钥,必须和生成JWT令牌时使用的密钥是配套的。
②如果JWT令牌解析校验时报错,则说明JWT令牌被篡改或失效了,令牌非法。
到此这篇关于使用Java生成JWT令牌的示例代码的文章就介绍到这了,更多相关Java生成JWT令牌内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Intellij IDEA 2017新特性之Spring Boot相关特征介绍
Intellij IDEA 2017.2.2版本针对Springboot设置了一些特性,本篇文章给大家简单介绍一下如何使用这些特性,需要的朋友参考下吧2018-01-01
Spring Boot如何配置yml配置文件定义集合、数组和Map
这篇文章主要介绍了Spring Boot 优雅配置yml配置文件定义集合、数组和Map,包括Spring Boot yml配置文件定义基本数据类型和引用数据类型的方式,需要的朋友可以参考下2023-10-10
Java并发编程深入理解之Synchronized的使用及底层原理详解 上
在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,同时synchronized可以保证一个线程的变化可见(可见性),即可以代替volatile2021-09-09


最新评论