当前位置: 首页 > news >正文

java:JWT的简单例子

【pom.xml】

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.12.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId><version>2.3.12.RELEASE</version>
</dependency>
<dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.19.1</version>
</dependency>

【JwtTest.java】

package com.chz.myJWT.utils;import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;public class JwtTest {public static final String SECRET = "I_am_chz";public static String createJwtToken(){HashMap<String, Object> headers = new HashMap<>();Calendar expires = Calendar.getInstance();expires.add(Calendar.MINUTE, 30);       // 过期时间,60sString jwtToken = JWT.create()// 第一部分Header.withHeader(headers)// 第二部分Payload.withClaim("userId", 20).withClaim("userName", "chz").withExpiresAt(expires.getTime())// 第三部分Signature.sign(Algorithm.HMAC256(SECRET));return jwtToken;}public static DecodedJWT parseJwtToken(String jwtToken){JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(SECRET)).build();DecodedJWT decodedJWT = jwtVerifier.verify(jwtToken);return decodedJWT;}public static void main(String[] args){String jwtToken = createJwtToken();System.out.println("jwtToken: " + jwtToken);DecodedJWT decodedJWT = parseJwtToken(jwtToken);System.out.println("userId: " + decodedJWT.getClaim("userId").asInt());System.out.println("userName: " + decodedJWT.getClaim("userName").asString());System.out.println("expiresAt: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(decodedJWT.getExpiresAt()));}
}

运行【JwtTest】
在这里插入图片描述

相关文章:

  • This content is blocked. Contact the site owner to fix the issue.
  • 你只是重新发现了一些东西
  • 【2024.6.22】今日科技时事:科技前沿大事件
  • 【C++提高编程-11】----C++ STL常用集合算法
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 生成哈夫曼树(100分) - 三语言AC题解(Python/Java/Cpp)
  • 鸿蒙原生App开发之:套用混合app开发思路
  • 用java写一个二叉树翻转
  • 如何获得一个Oracle 23ai数据库(vagrant box)
  • webpack总结16--webpack入门学习
  • 如何在 Ubuntu 14.04 上使用 Iptables 实现基本防火墙模板
  • 栈实现四则运算
  • 视频讲解|基于模型预测算法的含储能微网双层能量管理模型【mpc】
  • C++初学者指南第一步---12.引用
  • 破碎的像素地牢探险:游戏分享
  • Python爬虫学习 | Scrapy框架详解
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 2017 年终总结 —— 在路上
  • AHK 中 = 和 == 等比较运算符的用法
  • Codepen 每日精选(2018-3-25)
  • co模块的前端实现
  • extract-text-webpack-plugin用法
  • JavaScript-Array类型
  • Java应用性能调优
  • JSONP原理
  • react 代码优化(一) ——事件处理
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 从tcpdump抓包看TCP/IP协议
  • 关于Java中分层中遇到的一些问题
  • 技术:超级实用的电脑小技巧
  • 力扣(LeetCode)357
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何优雅地使用 Sublime Text
  • 新书推荐|Windows黑客编程技术详解
  • C# - 为值类型重定义相等性
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 说说我为什么看好Spring Cloud Alibaba
  • ​ArcGIS Pro 如何批量删除字段
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​如何使用QGIS制作三维建筑
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #pragma 指令
  • #QT(串口助手-界面)
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $.each()与$(selector).each()
  • (27)4.8 习题课
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (k8s)Kubernetes本地存储接入
  • (三)docker:Dockerfile构建容器运行jar包
  • (已解决)vscode如何选择python解释器
  • (转)h264中avc和flv数据的解析
  • (转载)利用webkit抓取动态网页和链接
  • .net 调用海康SDK以及常见的坑解释
  • .net6 webapi log4net完整配置使用流程