首页 > 其他分享 >JWT生成与解析

JWT生成与解析

时间:2023-10-20 15:36:14浏览次数:40  
标签:JWT System 生成 token println 解析 out

官方解析地址: 官网地址

<!--JWT(Json Web Token)登录支持-->
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>

生成JWT

// JWT头部分信息【Header】
Map<String, Object> header = new HashMap<>();
header.put("alg", "HS256");
header.put("typ", "JWT");

// 载核【Payload】
Map<String, Object> payload = new HashMap<>();
payload.put("sub", "1234567890");
payload.put("name","John Doe");
payload.put("admin",true);

// 声明Token失效时间
Calendar instance = Calendar.getInstance();
instance.add(Calendar.SECOND,300);// 300s

// 生成Token
String token = Jwts.builder()
        .setHeader(header)// 设置Header
        .setClaims(payload) // 设置载核
        .setExpiration(instance.getTime())// 设置生效时间
        .signWith(SignatureAlgorithm.HS256,"secret") // 签名,这里采用私钥进行签名,不要泄露了自己的私钥信息
        .compact(); // 压缩生成xxx.xxx.xxx

System.out.println(token);

解析JWT

// 生成的token
String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImV4cCI6MTY2MzI5NzQzMX0.Ju5EzKBpUnuIRhDG1SU0NwMGsd9Jl_8YBcMM6PB2C20";

// 解析head信息
JwsHeader jwsHeader = Jwts
        .parser()
        .setSigningKey("secret")
        .parseClaimsJws(token)
        .getHeader();

System.out.println(jwsHeader); // {typ=JWT, alg=HS256}
System.out.println("typ:"+jwsHeader.get("typ"));

// 解析Payload
Claims claims = Jwts
        .parser()
        .setSigningKey("secret")
        .parseClaimsJws(token)
        .getBody();
System.out.println(claims);// {sub=1234567890, name=John Doe, admin=true, exp=1663297431}
System.out.println("admin:"+claims.get("admin"));

// 解析Signature
String signature = Jwts
        .parser()
        .setSigningKey("secret")
        .parseClaimsJws(token)
        .getSignature();
System.out.println(signature); // Ju5EzKBpUnuIRhDG1SU0NwMGsd9Jl_8YBcMM6PB2C20

标签:JWT,System,生成,token,println,解析,out
From: https://www.cnblogs.com/Linzj5950/p/17777208.html

相关文章

  • MybatisX-Generator自动代码生成插件使用
    使用步骤:1、安装MybatisX插件;2、idea的database连接数据库;3、数据库表上右键,点击MybatisX-Generator;4、 进行生成代码的配置,按自己的项目项目修改如图三个位置的路径,配置完成后点击Next 5、本人项目是Mybatis-plus项目,如图的配置是针对Mybatis-plus......
  • RK3588编解码之mpp解码demo解析: mpi_dec_test
    1.简介mpi_dec_test是rockchip官方解码demo本篇文章进行mpi_dec_test的代码解析,解码流程解析2.环境介绍硬件环境:ArmSoM-W3RK3588开发板软件版本:OS:ArmSoM-W3Debian113.mpp解码流程解析 mpp_create:获取MppCtx实例以及MppApi结构体mpp_ini......
  • udig安装使用及geoserver图层样式sld的生成与配置
    uDig(User-friendlyDesktopInternetGIS)是一个开源的桌面地理信息系统(GIS)应用程序,专注于提供易于使用的GIS功能和地图制图工具。uDig是一个opensource(EPLandBSD)桌面应用程序框架,构建在EclipseRCP和GeoTools(一个开源的JavaGIS工具包)上的桌面GIS(地理信息系统);是一款......
  • Java中四种XML解析技术(DOM、SAX、Jdom、DOM4j)
    在平时工作中,难免会遇到把XML作为数据存储格式。面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历XML这块来测试,因为遍历XML是工作中使用最多的(至少我认为)。预备测试环境:AMD毒龙1.4GOC1.5G、256M......
  • 使用 Flutter 制作一个简单的笑话生成器应用程序
    在本教程中,我将向您展示如何使用Flutter制作一个简单的笑话生成器应用程序对于这个项目,我们将从RESTfulAPI获取数据API的链接:随机笑话对于这个项目,我不会关注应用程序的UI,我们只会关注如何从URL中获取数据,以及如何显示它们在我们开始之前,您必须将此包添加到您的pubspec.y......
  • gcc对构造函数的调用生成
    identifierC++的前端对identifier做了扩展,在每个identifier中还包含了两个cxx_binding字段:namespace_bindings和bindings。当通过字符串找到一个identifier的时候,同时顺带获得了两个binding信息。/*Language-dependentcontentsofanidentifier.*/structGTY(())lang_id......
  • vs发生生成错误怎么解决
    在VisualStudio(VS)中,生成错误(builderror)通常表示代码中存在一些问题,导致编译器无法正确编译代码。以下是一些常见的原因和解决方法:语法错误:这是最常见的错误类型,包括拼写错误、缺失的分号、括号不匹配等。检查代码中的语法错误,并尝试修复它们。引用错误:如果您引用了不存在的......
  • latexmk+make+条件编译一键编译论文生成 明评版/盲评版 单面版/双面版
    用latexmk+make编译latex项目假设latex项目的目录结构如下:.├──build│  ├──aux│  ├──各种临时文件│  └──release│  ├──thesis.pdf│  └──thesis.synctex.gz├──data│  ├──abstract.tex│  ├─......
  • java生成Excel文件
    版本一:importorg.apache.poi.ss.usermodel.*;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importjava.io.ByteArrayOutputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.ArrayList;importjava.util.HashMap;import......
  • 智安网络|从区块链到社交网络:解析去中心化的意义与应用
    在当今数字化的世界中,一个越来越常见的概念是“去中心化”。从区块链技术到金融系统,从社交网络到数据存储,去中心化被认为是一种前所未有的方式来重新定义和改变传统的中心化结构。那么,去中心化到底是什么?首先,去中心化是一种思想和哲学,旨在消除中心化权力和控制。传统的中心化结构通......