使用Java生成JWT令牌的示例代碼
更新時間:2024年04月09日 17:29:54 作者:臨界點oc
json-web-token簡稱java web令牌,也稱作JWT,是一種可以實現(xiàn)跨域身份驗證身份的方案,jwt不加密傳輸數(shù)據(jù),但能夠通過數(shù)據(jù)前面驗證數(shù)據(jù)的未被篡改,本文給大家介紹了如何使用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) // 自定義內(nèi)容(載荷) .setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000)) // 設置令牌有效期為1小時 .compact(); System.out.println(jwt); } }
3. 把生成的令牌復制到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)) // 設置令牌有效期為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令牌內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java NIO Path接口和Files類配合操作文件的實例
下面小編就為大家分享一篇Java NIO Path接口和Files類配合操作文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11Spring Security+JWT實現(xiàn)認證與授權的實現(xiàn)
本文主要介紹了Spring Security+JWT實現(xiàn)認證與授權的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04SpringBoot中優(yōu)化if-else語句的七種方法
if-else語句是控制流程的基本工具,但過度使用會使代碼變得復雜且難以維護,在SpringBoot , SpringCloud項目中,優(yōu)化if-else結(jié)構變得尤為重要,本文將深入探討七種策略,旨在減少SpringBoot , SpringCloud項目中 if-else的使用,需要的朋友可以參考下2024-07-07利用java實現(xiàn)一個客戶信息管理系統(tǒng)
這篇文章主要給大家介紹了關于利用java實現(xiàn)一個客戶信息管理系統(tǒng)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04springmvc和js前端的數(shù)據(jù)傳遞和接收方式(兩種)
本文介紹了springmvc和js前端的數(shù)據(jù)傳遞和接收方式(兩種),詳細的介紹了兩種方式,一種是json格式傳遞,另一種是Map傳遞,具有一定的參考價值,有興趣的可以了解一下2017-12-12