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

Spring Boot 生成与解析Jwt

spring-boot.jpg

Spring Boot 生成与解析Jwt

Maven依赖

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>

生成&解析

package yang;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Slf4j
public class TestMain {

    @Test
    public void run() {
        Map<String, Object> claims = new HashMap<>();
        claims.put("id", 1);
        claims.put("username", "宇阳");

        // 创建Jwt
        String jwt = Jwts.builder()
                .setClaims(claims) // 载荷:自定义的数据
                .signWith(SignatureAlgorithm.HS256, "yuyang") // 签名算法
                .setExpiration(new Date(System.currentTimeMillis() + 24 * 3600 * 1000)) // 有效期:以当前的时间戳往后加一天
                .compact(); // 转换为字符串
        log.info("生成Jwt:{}", jwt);

        // 解析Jwt
        Claims data = Jwts.parser()
                .setSigningKey("yuyang") // 自定义解密的秘钥
                .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwiZXhwIjoxNzA4OTMwMjMwLCJ1c2VybmFtZSI6IuWuh-mYsyJ9.6Iqhflkx900okTibiyLuYjwCDSgLBgYJ0RWB4-jt2ME") // 指定需要解析的Token令牌
                .getBody();
        log.info("解析Jwt:{}", data);
    }
}

工具类

package yang.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

public class JwtUtils {

    private static String signKey = "yuyang"; //签名密钥
    private static Long expire = 43200000L; //有效时间:12小时 单位毫秒

    // 生成Jwt
    public static String createJwt(Map<String, Object> claims){
        String jwt = Jwts.builder()
                .addClaims(claims)
                .signWith(SignatureAlgorithm.HS256, signKey)
                .setExpiration(new Date(System.currentTimeMillis() + expire))
                .compact();
        return jwt;
    }

    // 解析Jwt
    public static Claims parseJWT(String jwt){
        Claims claims = Jwts.parser()
                .setSigningKey(signKey)
                .parseClaimsJws(jwt)
                .getBody();
        return claims;
    }
}

使用工具类

public class TestMain {
    @Test
    public void run() {
        Map<String, Object> claims = new HashMap<>();
        claims.put("id", 1);
        claims.put("username", "宇阳");

        // 创建Jwt
        String jwt = JwtUtils.createJwt(claims);
        log.info("生成Jwt:{}", jwt);

        // 解析Jwt
        Claims data = JwtUtils.parseJWT(jwt);
        log.info("解析Jwt:{}", data);
    }
}
http://www.dtcms.com/a/9013.html

相关文章:

  • Qt区分左右Shift按键
  • Python爬虫——Urllib库-3
  • 基于chatgpt的聊天机器人
  • 如何保证 HTTPS 证书的有效性?
  • SpringCloud2023最新版本该如何进行组件选型?
  • 飞桨(PaddlePaddle)Tensor使用教程
  • TensorFlow
  • 总结虚拟机的安装步骤:
  • Swift SwiftUI 学习笔记 2024
  • 【AI绘画】免费GPU Tesla A100 32G算力部署Stable Diffusion
  • 认识事物的几个阶段 GPU学习
  • HarmonyOS—配置编译构建信息
  • 利用Python爬取高德地图全国地铁站点信息
  • 【嵌入式——QT】QTableWidget
  • canvas签名页面跟着滑动bug
  • 2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题
  • 计算机网络面经-拥塞控制的乘法减小和加法增大
  • 文物藏品信息管理系统的优势
  • unity学习(49)——服务器三次注册限制以及数据库化角色信息4--角色信息数据库化
  • 乌鸡的身高
  • SpringBoot+Vue+MySQL:装修管理新架构探索
  • gpt批量工具,gpt批量生成文章工具
  • 【比较mybatis、lazy、sqltoy、mybatis-flex操作数据】操作批量新增、分页查询(二)
  • SpringMVC 中的常用注解和用法
  • 一文掌握:电力管理系统该的功能和界面设计
  • 基于OpenCV的图形分析辨认05(补充)
  • 在PyCharm中使用Jupyter Notebooks实现高效开发
  • Android 混淆是啥玩意儿?
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:CheckboxGroup)
  • Nginx配置php起WoWSimpleRegistration服务