使用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令牌内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
相关文章
springboot项目配置logback-spring.xml实现按日期归档日志的方法
本文主要介绍了springboot项目配置logback-spring.xml实现按日期归档日志的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-08-08
最新评论