news 2026/9/3 2:33:03

JWT权限认证快速入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JWT权限认证快速入门

一、登录认证

令牌就是一段字符串
承载业务数据, 减少后续请求查询数据库的次数
防篡改, 保证信息的合法性和有效性

二、JWT简介

三、使用JWT

pom.xml引入起步依赖

<!--java jwt坐标--> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>4.4.0</version> </dependency>

编写工具类JwtUtil

utils/JwtUtil.java

package com.devops.utils; import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import java.util.Date; import java.util.Map; public class JwtUtil { private static final String KEY = "devops"; //接收业务数据,生成token并返回 public static String genToken(Map<String, Object> claims) { return JWT.create() .withClaim("claims", claims) .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12)) .sign(Algorithm.HMAC256(KEY)); } //接收token,验证token,并返回业务数据 public static Map<String, Object> parseToken(String token) { return JWT.require(Algorithm.HMAC256(KEY)) .build() .verify(token) .getClaim("claims") .asMap(); } }

单元测试类JwtTest

package com.example.demo; import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.interfaces.Claim; import com.auth0.jwt.interfaces.DecodedJWT; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.Date; import java.util.HashMap; import java.util.Map; @SpringBootTest public class JwtTest { // 生成加密后的token @Test public void testGen() { Map<String, Object> claims = new HashMap<>(); claims.put("id", 1); claims.put("username", "张三"); // 生成jwt代码 String token = JWT.create() .withClaim("user", claims) // 添加载荷 .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12)) // 设置过期时间 .sign(Algorithm.HMAC256("yange")); // 指定算法,生成密钥 System.out.println(token); } // 验证加密后的token @Test public void testVerify() { String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjp7ImlkIjoxLCJ1c2VybmFtZSI6IuW8oOS4iSJ9LCJleHAiOjE3NjczMTg5ODV9.jRY2E19_CC3qKkZl5poHaHInC7CVLf9bc36geEU2S04"; try { DecodedJWT decodedJWT = JWT.require(Algorithm.HMAC256("yange")) .build() .verify(token); Map<String, Claim> claims = decodedJWT.getClaims(); System.out.println(claims.get("user")); } catch (Exception e) { System.out.println("验证失败"); } } }

在项目中可以这样使用:

//使用JwtUtil工具类生成token Map<String, Object> claims = new HashMap<>(); claims.put("id", user.getId()); claims.put("username", username); String token = JwtUtil.genToken(claims); return Result.success(token);

最终的结果:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 22:44:42

【毕业设计】基于随机森林的贷款可能性预测系统实现

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 22:38:41

深度学习毕设项目:基于随机森林的贷款可能性预测系统实现

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/3 0:23:25

2026年IT行业技术发展前瞻:七大趋势将重塑数字未来

目录 一、人工智能的深度普及与行业融合 1.1 AI原生应用成为主流 1.2 多模态AI的突破性进展 二、量子计算的商业化应用初现端倪 2.1 量子优势在特定领域的实现 2.2 量子-经典混合计算架构 三、边缘计算的全面爆发 3.1 边缘AI的普及 3.2 5G-Advanced与边缘计算的深度融…

作者头像 李华
网站建设 2026/9/2 19:46:13

【Hadoop+Spark+python毕设】起点小说网数据可视化分析系统、计算机毕业设计、包括数据爬取、数据分析、数据可视化、实战教学

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

作者头像 李华
网站建设 2026/8/26 12:26:02

深度学习毕设项目推荐-基于 Inception-ResNet模型的皮肤癌分类系统实现

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/3 1:22:07

Jenkins安装

更新系统包索引 sudo apt update 安装 wget 用于下载&#xff0c;gnupg 用于验证签名 sudo apt install -y wget gnupg 创建目录用于存放 GPG 密钥 sudo mkdir -p /etc/apt/keyrings 下载 Jenkins 官方 GPG 公钥&#xff08;有效期到 2026 年过期&#xff09; sudo wget…

作者头像 李华