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依赖如上,请参考
00
相似问题