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

JWT工具类

时间:2024-11-05 21:10:06浏览次数:1  
标签:String JWT token jsonwebtoken import 工具 public

JWT工具类

一个 JWT 实际上就是一个字符串,它由三部分组成,头部、载荷与签名。前两部分需要经过 Base64 编码,后一部分通过前两部分 Base64 编码后再加密而成。具体内容可参考官方文档

头部(Header)头部用于描述关于该 JWT 的最基本的信息

载荷(playload)载荷就是存放有效信息的地方。

这些有效信息包含三个部分:

  • 标准中注册的声明(建议但不强制使用)
  • 公共的声明
  • 私有的声明

注意:载荷中的这3个声明并不是都要同时设置。

签证(signature)jwt的第三部分是一个签证信息。

实战入门

引入Maven依赖

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-api</artifactId>
</dependency>

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-impl</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-jackson</artifactId>
    <scope>runtime</scope>
</dependency>

创建JWT工具类

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

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

public class JwtUtil {  
 	private SecretKey tokenSignKey = Keys.hmacShaKeyFor("your_secret_key".getBytes()); // JWT加密或解密的秘钥 
    
    private String secretKey = "your_secret_key"; // JWT加密或解密的秘钥  
    private long expirationTime = 1000 * 60 * 60; // 1小时过期时间  
    
    // 生成JWT  
    public String generateToken(String id) {  
        Map<String, Object> claims = new HashMap<>();  
        return createToken(claims, id);  
    }  

    private String createToken(Map<String, Object> claims, String subject) {  
        return Jwts.builder()  
                .setClaims(claims)   // 载荷-标准中注册的声明
                .setSubject(subject) //设置主题 
                .setIssuedAt(new Date(System.currentTimeMillis()))  //设置 JWT 的签发时间为当前时间
                .setExpiration(new Date(System.currentTimeMillis() + expirationTime))   //设置过期时间
                .signWith(SignatureAlgorithm.HS256, secretKey) //使用指定的签名算法(这里是 HS256)和密钥(secretKey)对 JWT 进行签名
                .compressWith(CompressionCodecs.GZIP) //使用 GZIP 压缩 JWT,以减少其大小,便于传输。
                .compact();  //构建和返回
    }  

    // 验证JWT  
    public boolean validateToken(String token, String id) {  
        final String extractId = extractId(token);  
        return (extractId.equals(id) && !isTokenExpired(token));  
    }  

    // 从JWT中提取用户Id  
    public String extractId(String token) {  
        return extractAllClaims(token).getSubject();  
    }  

    // 检查JWT是否过期  
    public boolean isTokenExpired(String token) {  
        return extractAllClaims(token).getExpiration().before(new Date());  
    }  

    // 提取所有声明  
    private Claims extractAllClaims(String token) {  
        return Jwts.parser()  
                .setSigningKey(secretKey)  
                .parseClaimsJws(token)  
                .getBody();  
    }  
}

使用示例

public class Main {  
    public static void main(String[] args) {  
        JwtUtil jwtUtil = new JwtUtil();  
        
        // 生成token  
        String token = jwtUtil.generateToken("username123");  
        System.out.println("Generated Token: " + token);  
        
        // 验证token  
        boolean isValid = jwtUtil.validateToken(token, "username123");  
        System.out.println("Is token valid? " + isValid);  
    }  
}

注意事项

  • 安全性:请务必使用强随机密钥,并避免使用简单的字符串作为密钥。
  • 过期时间:根据您的应用需求合理设置 JWT 的过期时间。
  • Claims:您可以根据需求添加其他用户相关的 Claims。

标签:String,JWT,token,jsonwebtoken,import,工具,public
From: https://www.cnblogs.com/21CHS/p/18528854

相关文章

  • JWT令牌——从入门到精通
    一、跨域认证的问题互联网服务离不开用户认证。一般流程是下面这样。1、用户向服务器发送用户名和密码。2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。3、服务器向用户返回一个session_id,写入用户的Cookie。4、用户随后的每一......
  • 【Java猿猿必备】Hutool工具库开箱即用
            Hutool真心是一个不错的国产Java工具类库,功能全面,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行了封装,开箱即用!深受国内开发者的喜爱。目前确实是成为了国内使用最广的工具库之一了,Gitee上的Star数也到了23k+。项目地址:https://git......
  • 诛仙3:幻心千劫|单机安装教程|虚拟机一键端|GM工具包
    天给大家带来一款单机游戏的架设:诛仙3-幻心千劫-16职业。游戏版本:v4.4.0只适用于单机娱乐,此教程是本人亲测所写,踩坑无数,如果你是小白跟着教程走也是可以搭建  亲测视频演示https://githubs.xyz/show/297.mp4 游戏安装步骤此游戏架设需要安装虚拟机,没......
  • 中公网校视频课件课程下载工具,如何在电脑端下载中公网校视频课件资料到本地?
    一.安装中公网校课程下载器1.获取学无止下载器https://www.xuewuzhi.cn/eoffcn_downloader2.下载安装后,然后点击桌面快捷方式运行即可。注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。二.使用说明1.学无止下载器介绍......
  • PMP考试必备工具:最优秀的项目管理软件有哪些?
    在准备PMP(项目管理专业人士)考试的过程中,了解和熟悉项目管理工具是非常重要的一环。尽管PMP更多关注的是项目管理的知识体系(如PMBOKGuide中的流程、知识领域、工具与技术等),但了解一些常见且优秀的项目管理软件工具,能够帮助你更好地理解实际项目管理中的应用场景,也有助于提升......
  • 工具列表2024
    ------------------后端开发相关------------------数据结构与算法设计模式正则表达式JDKXMLDTDXMLDOMXSLTXPathXQueryXLink和XPointer、XMLSchema教程SVG教程WebServices教程WSDL教程SOAP教程Eclipse教程MavenSQL教程GitSVNMarkdown教程ideaDevopsjenkinsgitl......
  • KillWxapkg:一款可反编译微信小程序的工具
    原创Eagle1949技术源泉免责声明本程序仅供于学习交流,请使用者遵守《中华人民共和国网络安全法》,勿将此工具用于非授权的测试,开发者不负任何连带法律责任。KillWxapkg是一款自动化反编译微信小程序,小程序安全评估工具,可用来发现小程序安全问题。它支持小程序自动解密,自动......
  • 运维监控工具
    一、zabbix介绍及安装部署1.简介 zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix由2部分构成,zabbixserver与可选组件zabbixagent。 zabbixserver可以通过SNMP,zabbixagent,ping,端口监视等方法提供对远程服务器/......
  • 《过山车之星》遭遇emp.dll错误困扰,DirectX修复工具助你重拾乐园梦想
    许多玩家在游玩《过山车之星》时遇到了emp.dll错误,导致游戏无法正常运行。这种问题通常与DirectX组件相关,因此可以尝试使用DirectX修复工具来解决。以下是具体的解决步骤:1.下载DirectX修复工具:前往官方网站或可信的下载站点,下载最新版本的DirectXRepair。DirectX修复工......
  • TaTa_0.0.6,视频图片4K修复工具,模糊一键变高清
    这款神奇的工具就是TaTa!它采用的是开源模型Real-ESRGAN-ncnn-vulkan技术,专门用于图像清晰化处理。无论你的原始图片有多么模糊,只需轻轻一点,它就能让你的图像瞬间变得清晰无比,甚至能够达到4K的画质!当然,他也有修复视频和其他功能适用的系统:windows系统下载好软件后,解压安......