Git 上缺少代码

来源:11-11 通过代码实现JWT生成和验证及解析

Kent肯特

2024-02-10

老师,这节课的 JWTUtil 的代码 Git 上没有呢。

写回答

1回答

大能老师

2024-02-21

package com.sample.mall.common.util;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.google.common.collect.Maps;

import java.util.Base64;
import java.util.Calendar;
import java.util.Map;

public class JWTUtil {

    public static void main(String[] args) throws Exception {

        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.SECOND, 5);

        String secret = "123456";

        String token = JWT.create()
                .withHeader(Maps.newHashMap())
                .withClaim("id",666)
                .withClaim("name", "daneng")
                .withExpiresAt(calendar.getTime())
                .sign(Algorithm.HMAC256(secret));
        System.out.println("\n=== 生成Token ===");
        System.out.println(token);

        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(secret)).build();
        DecodedJWT decodedJWT = jwtVerifier.verify(token);
        String header = decodedJWT.getHeader();
        String payload = decodedJWT.getPayload();
        String signature = decodedJWT.getSignature();
        System.out.println("\n=== 验证Token ===");
        System.out.println(header);
        System.out.println(new String(Base64.getDecoder().decode(header)));
        System.out.println(payload);
        System.out.println(new String(Base64.getDecoder().decode(payload)));
        System.out.println(signature);

        System.out.println("\n=== 解析Token ===");
        Map<String, Claim> claimMap = decodedJWT.getClaims();
        for(Map.Entry<String, Claim> claimEntry : claimMap.entrySet()) {
            System.out.println(claimEntry.getKey() + " - " + claimEntry.getValue());
        }

        System.out.println("\n=== 验证Token过期 ===");
        Thread.sleep(6000L);
        jwtVerifier.verify(token);
    }
}
<dependency>
   <groupId>com.auth0</groupId>
   <artifactId>java-jwt</artifactId>
   <version>3.19.2</version>
</dependency>


抱歉,由于演示的时候多个不同分支,最终放到资料里面的有点遗漏。代码和POM依赖如上,请参考

0
0

Java分布式架构设计与开发实战

项目贯穿式讲解,真正将理论与实战相结合

325 学习 · 74 问题

查看课程