JWT生成、解析token

2024-09-06 21:04
文章标签 生成 解析 token jwt

本文主要是介绍JWT生成、解析token,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 1. 导入JWT相关依赖
  • 2. JWT生成token
  • 3. JWT解析token
  • 4. 测试结果
  • 5. JWT加密、解密工具类

1. 导入JWT相关依赖

<!--      jwt认证模块--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.10.2</version></dependency>
<!--      jwt api impl实现--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.10.2</version></dependency>
<!--      jwt json--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><version>0.10.2</version></dependency>

2. JWT生成token

在这里插入图片描述

    /*** 获取JWT令牌* @return*/public static String getToken(String key){Map headers = new HashMap();//设置签名算法headers.put("alg", "HS256");//设置令牌类型headers.put("typ", "JWT");Map<String, Object> claims = new HashMap<>();//设置令牌主题claims.put("sub", "1234567890");//设置令牌其他信息claims.put("name", "John Doe");claims.put("admin", true);//生成令牌String jwt = Jwts.builder()//设置头信息.setHeaderParams(headers)//设置负载信息.setClaims(claims)//使用HS256算法和密钥对JWT进行签名.signWith(SignatureAlgorithm.HS256,key)//将之前设置的头部信息、负载信息和签名信息组合成一个完整的JWT,并以字符串形式返回.compact();System.out.println(jwt);return jwt;}

3. JWT解析token

    /*** 解析JWT令牌* @param token* @param key*/public static void parseToken(String token,String key){try{System.out.println("开始解析令牌...");Claims claims = Jwts.parser()//创建一个解析器.setSigningKey(key)//设置验证签名的密钥.parseClaimsJws(token)//传入需要进行解析的token并解析.getBody();//从Jws<Claims>对象中获取负载信息System.out.println(claims);}catch (Exception e){e.printStackTrace();}}

4. 测试结果

    public static void main(String[] args) {String key = "3f2e1d4c5b6a79808f7e6d5c4b3a29181716151413121110";String token = getToken(key);parseToken(token,key);}

      输出结果:

在这里插入图片描述

5. JWT加密、解密工具类

/*** 提供Jwt工具类* 提供Token生成和验证方法* @author Huan*/
@Component //托管spring容器
public class JwtUtil {// 密钥private static final String key = "3f2e1d4c5b6a79808f7e6d5c4b3a29181716151413121110";/*** 生成JWT令牌* @param payload* @return*/public String getToken(Map payload){//设置头部信息Map headers = new HashMap();//设置签名算法headers.put("alg", "HS256");//设置令牌类型headers.put("typ", "JWT");//生成令牌String jwt = Jwts.builder()//设置头信息.setHeaderParams(headers)//设置负载信息.setClaims(payload)//使用HS256算法和密钥对JWT进行签名.signWith(SignatureAlgorithm.HS256,key)//将之前设置的头部信息、负载信息和签名信息组合成一个完整的JWT,并以字符串形式返回.compact();System.out.println(jwt);return jwt;}/*** 解析JWT令牌* @param token* @return*/public Claims parseToken(String token){try{System.out.println("开始解析令牌...");Claims claims = Jwts.parser()//创建一个解析器.setSigningKey(key)//设置验证签名的密钥.parseClaimsJws(token)//传入需要进行解析的token并解析.getBody();//从Jws<Claims>对象中获取负载信息System.out.println(claims);return claims;}catch (Exception e){e.printStackTrace();}return null;}
}

链接:

JWT官方地址: https://jwt.io/

JWT官方文档: https://github.com/jwtk/jjwt

JWT官方文档快速开始: https://github.com/jwtk/jjwt?tab=readme-ov-file#quickstart

这篇关于JWT生成、解析token的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143112

相关文章

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

idea-java序列化serialversionUID自动生成方式

《idea-java序列化serialversionUID自动生成方式》Java的Serializable接口用于实现对象的序列化和反序列化,通过将对象转换为字节流来存储或传输,实现Serializa... 目录简介实现序列化serialVersionUID配置使用总结简介Java.io.Seripyth

C++ 多态性实战之何时使用 virtual 和 override的问题解析

《C++多态性实战之何时使用virtual和override的问题解析》在面向对象编程中,多态是一个核心概念,很多开发者在遇到override编译错误时,不清楚是否需要将基类函数声明为virt... 目录C++ 多态性实战:何时使用 virtual 和 override?引言问题场景判断是否需要多态的三个关

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

Springboot中JWT登录校验及其拦截器实现方法

《Springboot中JWT登录校验及其拦截器实现方法》:本文主要介绍Springboot中JWT登录校验及其拦截器实现方法的相关资料,包括引入Maven坐标、获取Token、JWT拦截器的实现... 目录前言一、JWT是什么?二、实现步骤1.引入Maven坐标2.获取Token3.JWT拦截器的实现4.