news 2026/3/23 7:40:05

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/3/12 6:49:47

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

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

作者头像 李华
网站建设 2026/3/20 10:45:50

计算机深度学习毕设实战-基于随机森林的贷款可能性预测系统实现

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

作者头像 李华
网站建设 2026/3/7 8:23:57

Numpy 数组操作

Numpy 数组操作 引言 Numpy 是 Python 中一个强大的科学计算库,它提供了高效的多维数组对象和一系列用于处理数组的函数。在数据分析、机器学习、科学计算等领域,Numpy 都有着广泛的应用。本文将深入探讨 Numpy 数组的操作,包括创建数组、索引、切片、迭代、数组的形状和转…

作者头像 李华
网站建设 2026/3/23 8:21:35

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

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

作者头像 李华
网站建设 2026/3/4 7:46:58

ADVANCE Day33

浙大疏锦行 &#x1f4d8; Day 33 实战作业&#xff1a;深度学习 Hello World —— 手搓神经网络 1. 作业综述 核心目标&#xff1a; 环境配置&#xff1a;确认 PyTorch 环境安装成功&#xff08;这是深度学习的第一道门槛&#xff09;。数据张量化&#xff1a;学会将 Nump…

作者头像 李华