news 2026/4/16 12:34: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/4/10 19:01:52

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

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

作者头像 李华
网站建设 2026/4/16 9:03:46

微振动隔离

振动隔离工程是一门专注于振动控制的工程学科&#xff0c;核心在于设计并实施各类技术与设备&#xff0c;削弱机械系统或建筑结构受到的外部振动干扰。其核心目标是降低振动对设备精度、结构安全及人员舒适度的不利影响&#xff0c;进而保障系统稳定运行、延长设备使用寿命、保…

作者头像 李华
网站建设 2026/4/16 9:08:25

强烈安利10个AI论文软件,专科生轻松搞定毕业论文!

强烈安利10个AI论文软件&#xff0c;专科生轻松搞定毕业论文&#xff01; AI 工具如何助力论文写作&#xff0c;让专科生轻松应对毕业挑战 在当前的学术环境中&#xff0c;越来越多的学生开始借助 AI 工具来提升论文写作效率。尤其是在面对毕业论文这一重要任务时&#xff0c…

作者头像 李华
网站建设 2026/4/16 9:00:53

重新理解身份:为什么 SAP Cloud Identity Services 是 SAP BTP 时代的入口与底座

在 SAP BTP 里做 ABAP 或 CAP 开发时,很多人一开始把注意力放在服务编排、数据建模、扩展点、CI/CD,直到某一天系统上线,才发现真正让业务跑不起来的,往往不是代码,而是人怎么进来、进来能做什么、离职后怎么立刻收回权限。在云时代,身份不再只是登录页的一次用户名密码校…

作者头像 李华
网站建设 2026/4/16 10:43:16

EtherCAT分析仪:原理与使用全解析

先辑半导体EtherCAT分析仪 的原理和使用方法。第一部分&#xff1a;原理与架构EtherCAT分析仪的核心原理是利用芯片强大的硬件外设和软件协议栈&#xff0c;实现对EtherCAT数据帧的监听、捕获、解析和调试。它工作在 “监听模式”或“透明网关模式” &#xff0c;本身不主动作为…

作者头像 李华
网站建设 2026/4/16 10:43:24

【Java毕设源码分享】基于springboot+vue的沉浸式戏曲文化体验系统的设计与实现(程序+文档+代码讲解+一条龙定制)

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

作者头像 李华