使用Java生成JWT令牌的示例代碼
1. 在pom.xml中引入依賴
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>2. 使用Jwts的相關(guān)方法生成令牌
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) // 自定義內(nèi)容(載荷)
.setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)) // 設(shè)置令牌有效期為1小時(shí)
.compact();
System.out.println(jwt);
}
}
3. 把生成的令牌復(fù)制到JWT官網(wǎng),查看原始數(shù)據(jù)

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) // 自定義內(nèi)容(載荷)
.setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)) // 設(shè)置令牌有效期為1小時(shí)
.compact();
System.out.println(jwt);
}
/**
* 解析令牌
*/
@Test
public void testParseJwt() {
Claims claims = Jwts.parser()
.setSigningKey("itheima") // 指定簽名密鑰
// 解析令牌
.parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoidG9tIiwiaWQiOjEsImV4cCI6MTY3MDQ2NzIyNH0.jL02hIWc1fZBjzvFCTtW4ZlSJ424khsobogsq0X2KVc")
.getBody();
System.out.println(claims);
}
}
注意事項(xiàng):
①JWT校驗(yàn)時(shí)使用的簽名密鑰,必須和生成JWT令牌時(shí)使用的密鑰是配套的。
②如果JWT令牌解析校驗(yàn)時(shí)報(bào)錯(cuò),則說明JWT令牌被篡改或失效了,令牌非法。
到此這篇關(guān)于使用Java生成JWT令牌的示例代碼的文章就介紹到這了,更多相關(guān)Java生成JWT令牌內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實(shí)現(xiàn)方法
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之雙端鏈表原理與實(shí)現(xiàn)方法,簡單描述了雙端鏈表的概念、原理并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)雙端鏈表的相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
spring中實(shí)現(xiàn)容器加載完成后再執(zhí)行自己的方法
這篇文章主要介紹了spring中實(shí)現(xiàn)容器加載完成后再執(zhí)行自己的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
JAVA正則表達(dá)式校驗(yàn)qq號(hào)碼的方法
Java作為一種開發(fā)語言,有許多值得推薦的地方,但是它一直以來沒有自帶對(duì)正則表達(dá)式的支持。下面小編給大家?guī)砹薐AVA正則表達(dá)式校驗(yàn)qq號(hào)碼的方法,需要的朋友參考下吧2018-04-04
java中實(shí)現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實(shí)例
用Java創(chuàng)建文件或目錄非常簡單,下面這篇文章主要給大家介紹了關(guān)于java中實(shí)現(xiàn)創(chuàng)建目錄與創(chuàng)建文件的操作實(shí)例,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
java中對(duì)象和Map互相轉(zhuǎn)換的幾種常見方式舉例
Map在日常開發(fā)應(yīng)用中的頻率很高,最常用的實(shí)現(xiàn)類是HashMap和有序的TreeMap,下面這篇文章主要給大家介紹了關(guān)于java中對(duì)象和Map互相轉(zhuǎn)換的幾種常見方式舉例,需要的朋友可以參考下2024-01-01

