最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Java生成JWT令牌的示例代碼

 更新時間:2024年04月09日 17:29:54   作者:臨界點(diǎn)oc  
json-web-token簡稱java web令牌,也稱作JWT,是一種可以實(shí)現(xiàn)跨域身份驗(yàn)證身份的方案,jwt不加密傳輸數(shù)據(jù),但能夠通過數(shù)據(jù)前面驗(yàn)證數(shù)據(jù)的未被篡改,本文給大家介紹了如何使用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小時
                .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小時
                .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)時使用的簽名密鑰,必須和生成JWT令牌時使用的密鑰是配套的。

②如果JWT令牌解析校驗(yàn)時報錯,則說明JWT令牌被篡改或失效了,令牌非法。

到此這篇關(guān)于使用Java生成JWT令牌的示例代碼的文章就介紹到這了,更多相關(guān)Java生成JWT令牌內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深度解析Java中的ReentrantLock原理

    深度解析Java中的ReentrantLock原理

    這篇文章主要介紹了關(guān)于ReentrantLock的原理解析,文章通過代碼示例介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2023-07-07
  • java把字符串轉(zhuǎn)化成公式計(jì)算的示例

    java把字符串轉(zhuǎn)化成公式計(jì)算的示例

    今天小編就為大家分享一篇java把字符串轉(zhuǎn)化成公式計(jì)算的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • MyBatis 延遲加載、一級緩存、二級緩存(詳解)

    MyBatis 延遲加載、一級緩存、二級緩存(詳解)

    下面小編就為大家?guī)硪黄狹yBatis 延遲加載、一級緩存、二級緩存(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Intellij IDEA 2017新特性之Spring Boot相關(guān)特征介紹

    Intellij IDEA 2017新特性之Spring Boot相關(guān)特征介紹

    Intellij IDEA 2017.2.2版本針對Springboot設(shè)置了一些特性,本篇文章給大家簡單介紹一下如何使用這些特性,需要的朋友參考下吧
    2018-01-01
  • window下安裝和配置maven環(huán)境

    window下安裝和配置maven環(huán)境

    這篇文章主要為大家詳細(xì)介紹了window下安裝和配置maven環(huán)境的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • javaweb實(shí)現(xiàn)文件上傳功能

    javaweb實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了javaweb實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Spring?Boot如何配置yml配置文件定義集合、數(shù)組和Map

    Spring?Boot如何配置yml配置文件定義集合、數(shù)組和Map

    這篇文章主要介紹了Spring?Boot?優(yōu)雅配置yml配置文件定義集合、數(shù)組和Map,包括Spring?Boot?yml配置文件定義基本數(shù)據(jù)類型和引用數(shù)據(jù)類型的方式,需要的朋友可以參考下
    2023-10-10
  • SpringCache的基本使用方法

    SpringCache的基本使用方法

    Spring?Cache利用了AOP,實(shí)現(xiàn)了基于注解的緩存功能,并且進(jìn)行了合理的抽象,業(yè)務(wù)代碼不用關(guān)心底層是使用了什么緩存框架,只需要簡單地加一個注解,就能實(shí)現(xiàn)緩存功能了,本文介紹SpringCache的基本使用方法,感興趣的朋友一起看看吧
    2024-01-01
  • 詳解Java文件下載的幾種實(shí)現(xiàn)方式

    詳解Java文件下載的幾種實(shí)現(xiàn)方式

    這篇文章主要介紹了詳解Java文件下載的幾種實(shí)現(xiàn)方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Java并發(fā)編程深入理解之Synchronized的使用及底層原理詳解 上

    Java并發(fā)編程深入理解之Synchronized的使用及底層原理詳解 上

    在并發(fā)編程中存在線程安全問題,主要原因有:1.存在共享數(shù)據(jù) 2.多線程共同操作共享數(shù)據(jù)。關(guān)鍵字synchronized可以保證在同一時刻,只有一個線程可以執(zhí)行某個方法或某個代碼塊,同時synchronized可以保證一個線程的變化可見(可見性),即可以代替volatile
    2021-09-09

最新評論

阳山县| 敖汉旗| 东平县| 上虞市| 延津县| 福州市| 竹溪县| 阿克| 通化县| 石阡县| 贵南县| 万全县| 桃园市| 平凉市| 左贡县| 横峰县| 天镇县| 逊克县| 沙湾县| 鱼台县| 阳东县| 酒泉市| 安乡县| 大港区| 琼结县| 乐山市| 正定县| 新干县| 四川省| 洛隆县| 古蔺县| 东宁县| 望城县| 阿合奇县| 夏邑县| 清苑县| 德州市| 宜阳县| 五华县| 法库县| 岱山县|