首页 > 其他分享 >JWT工具【工具类】

JWT工具【工具类】

时间:2024-06-13 17:31:59浏览次数:25  
标签:String JWT jwt static claims import 工具

一、JWT

JSON Web Token (JWT)是一个开放标准(RFC 7519),定义了一种紧凑且自包含的方式,以JSON对象的形式在各方之间安全地传输信息。这种信息可以被验证和信任,因为它是数字签名的。具体来说,JWT是一种用于在不同系统间身份验证的json对象,它主要由三部分组成:header(头部)、payload(载荷)和signature(签名)。
JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。由于其规范化的JSON结构,使得JWT应用非常广泛,是目前最流行的跨域认证解决方案之一。

二、案例

案例还是以工具类为主,方便各位拿去直接可以使用:
引入依赖:

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.4.0</version>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>

工具类代码:

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * JWT工具类
 */
public class JwtUtils {

    /**
     * 签名密钥
     */
    private static final String signKey = "Jerryean";
    /**
     * 有效时间
     */
    private static final Long expire = 43200000L;

    /**
     * 生成JWT令牌
     *
     * @param claims JWT第二部分负载 payload 中存储的内容
     */
    public static String generateJwt(Map<String, Object> claims) {
        return Jwts.builder()
                .addClaims(claims)//自定义信息(有效载荷)
                .signWith(SignatureAlgorithm.HS256, signKey)//签名算法(头部)
                .setExpiration(new Date(System.currentTimeMillis() + expire))//过期时间
                .compact();
    }

    /**
     * 解析JWT令牌
     *
     * @param jwt JWT令牌
     * @return JWT第二部分负载 payload 中存储的内容
     */
    public static Claims parseJWT(String jwt) {
        return Jwts.parser()
                .setSigningKey(signKey)//指定签名密钥
                .parseClaimsJws(jwt)//指定令牌Token
                .getBody();
    }


    public static void main(String[] args) {
        Map<String, Object> map = new HashMap<>();
        map.put("orgId", "1");
        map.put("username", "admin");
        String jwt_token = JwtUtils.generateJwt(map);
        System.out.println(jwt_token);

        Claims claims = JwtUtils.parseJWT(jwt_token);
        System.out.println(claims);
    }
}

测试结果:
在这里插入图片描述

标签:String,JWT,jwt,static,claims,import,工具
From: https://blog.csdn.net/weixin_42039228/article/details/139659995

相关文章

  • AI智能创作工具:ChatMoney,一键创作,让你的公众号文章爆款!
    本文由ChatMoney团队出品引言想不想你的公众号文章一炮而红?是不是羡慕那些动不动就10W+的爆款文章?别眼红了,用ChatMoney,你也可以做到!这货可不是普通的写作工具,它是你的文章变成金钥匙的魔法师。一按键,爆款文章就来啦!粉丝、点赞、转发,全都哗啦啦地来。好奇怎么做到的?跟我来,咱们......
  • 短视频压缩与编码技术在短剧APP小程序开发中的应用:技术选择与工具推荐
    在短剧APP小程序开发中,选择合适的短视频压缩与编码技术及工具对于实现高效的视频处理至关重要。本文将探讨如何选择合适的技术和工具,以及推荐一些在实际开发中常用的解决方案。技术选择的原则平衡压缩率与视频质量:在选择压缩技术时,需要平衡压缩率与视频质量之间的关系。过......
  • 数据库开发工具如何选择?dbForge Studio或Navicat
    在数据库开发领域,Devart和PremiumSoft是两个知名的工具供应商。它们提供的产品都被广泛应用于全球的企业和开发者中,但它们各自的特点和优势又有所不同。本文将对比这两个工具,以帮助你更好地理解它们的特性和适用场景。首先,我们来看一下Devart。Devart是一个专注于数据库开发和......
  • CSRF漏洞复现及测试工具讲解
    一、Python编写一个存在CSRF漏洞①编写html网页<!DOCTYPEhtml><html><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>转账</title......
  • 超好用mqtt服务器端server和客户端client协议通信学习测试工具
    超好用mqtt服务器端server和客户端client协议通信学习测试工具 作为物联网数据采集解决方案专业提供商,数采物联网小编daq-iot在这里做以下内容介绍,并诚挚的欢迎大家讨论和交流   软件使用注意事项:本软使用需要用户了解mqtt通信参数设置好后,要先启动软件左下角的服......
  • Apollo(配置管理工具)
    介绍Python读取配置参数通常使用处理yaml,conf配置文件和env环境变量,这种配置方式比较方便本地加载,在微服务分布式部署时对这些配置需要集中管理,并支持热更新则引入了Apollo Apollo(阿波罗) 是一款可靠的分布式配置管理中心,诞生于携程框架研发部,能够集中化管理应用不同环境、不......
  • cwRsync小小的工具大大的坑——windows文件同步工具
    *cwRsync是linux工具:Rsync,在windows上的版本两台windos主机之间的某个或多个目录进行同步,源端安装服务端,目标端安装客户端下载地址:cwRsync:cwRsync文件同步工具下载内容如下cwRsyncServer_4.0.5_Installer.zip为服务端软件cwRsync_4.0.5_Installer.zip为客户端软件服......
  • 云平台DNS故障导致网站访问卡顿异常排查过程,wireshark、strace等工具在实际问题排查过
    一、问题现象    项目上使用华为私有云,前段时间华为升级云平台后,云上用户反馈业务系统出现卡顿,之前几秒可以刷新出来的页面现在需要几十秒。提供了一个比较明显的url和curl调用方法。10.213.x.xxx:8082/files/logincurl-H"Content-Type:application/json"-H"T......
  • crane 容器镜像管理工具
    https://github.com/google/go-containerregistry/releases/download/v0.19.1/go-containerregistry_Linux_x86_64.tar.gzcraneauth登录或访问凭证cranedelete从其注册表中删除一个镜像引用cranedigest获取一个镜像的摘要cranels列出repo中的标签cranemanifest......
  • Tailor:视频编辑的魔法工具,免费又强大!
    TailorTailor是令人惊叹的视频编辑神器!其人脸和语音剪辑精准无比,人脸识别能锁定人物画面,语音捕捉和裁剪独具魅力。视频生成方面,口播生成赋予图像灵魂,字幕生成准确契合,色彩生成让黑白鲜活,音频生成创造无限可能。优化上,背景更换如入奇幻世界,流畅度与清晰度也极佳。Tailor......