日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

JJWT

發(fā)布時(shí)間:2023/12/13 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 JJWT 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JJWT是一個(gè)提供端到端的JWT創(chuàng)建和驗(yàn)證的Java庫(kù)。永遠(yuǎn)免費(fèi)和開(kāi)源(Apache License,版本2.0),JJWT很容易使用和理解。它被設(shè)計(jì)成一個(gè)以建筑為中心的流暢界面,隱藏了它的大部分復(fù)雜性。

JJWT的目標(biāo)是最容易使用和理解用于在JVM上創(chuàng)建和驗(yàn)證JSON Web令牌(JWTs)的庫(kù)。

JJWT是基于JWT、JWS、JWE、JWK和JWA RFC規(guī)范的Java實(shí)現(xiàn)。

JJWT還添加了一些不屬于規(guī)范的便利擴(kuò)展,比如JWT壓縮和索賠強(qiáng)制。

JJWT用法

添加依賴

        <!--jjwt 生成token-->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
/**
     * 生成Token
     */
    @Test
    public void testJWTBuilder(){
        long now = System.currentTimeMillis();
        long exp = now + 60 * 1000;
        JwtBuilder jwtBuilder= Jwts.builder()
                //設(shè)置id,{"jti":""}
                .setId("9527")
                //{"sub":""}
                .setSubject("JJWT")
                //{"iat":""}
                .setIssuedAt(new Date())
                .signWith(SignatureAlgorithm.HS256,"xxxxx")
                //過(guò)期時(shí)間,指定從現(xiàn)在開(kāi)始到什么時(shí)候過(guò)期,{"exp":""}
                .setExpiration(new Date(exp))
                //自定義聲明,參數(shù)map
                //.addClaims()
                .claim("name","xiaoqiang")
                .claim("中國(guó)","加油");

        //生成token
        String token = jwtBuilder.compact();
        System.out.println(token);

        String[] split=token.split("\.");

        System.out.println(Base64Codec.BASE64.decodeToString(split[0]));
        System.out.println(Base64Codec.BASE64.decodeToString(split[1]));
        System.out.println(Base64Codec.BASE64.decodeToString(split[2]));
    }

    /**
     * Token解析
     */
    @Test
    public void testJWTToken(){
        String token = "eyJhbGciOiJIUzI1NiJ9." +
                "eyJqdGkiOiI5NTI3Iiwic3ViIjoiSkpXVCIsImlhdCI6MTYyOTQ0MTE2OSwiZXhwIjoxNjI5NDQxMjI5LCJuYW1lIjoieGlhb3FpYW5nIiwi5Lit5Zu9Ijoi5Yqg5rK5In0" +
                ".ztKcVF5r5hwQ7X4qwhH-NvWmdWELXImxIDRWiaCSzq8";

        Claims claims = Jwts.parser().setSigningKey("xxxxx")
                .parseClaimsJws(token).getBody();

        System.out.println("jti:"+claims.getId());
        System.out.println("sub:"+claims.getSubject());
        System.out.println("iat:"+claims.getIssuedAt());
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("iat:"+format.format(claims.getIssuedAt()));
        System.out.println("exp:"+format.format(claims.getExpiration()));
        System.out.println("name:"+claims.get("name"));
        System.out.println("中國(guó):"+claims.get("中國(guó)"));

    }

總結(jié)

以上是生活随笔為你收集整理的JJWT的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。