当前位置: 首页 > news >正文

JWT token 简要介绍以及使用场景和案例

JWT Token 介绍

JWT (JSON Web Token) 是一种开放标准 (RFC 7519),用于在各方之间安全地传输信息。它是一个紧凑的、URL安全的令牌,用于在客户端和服务器之间传递声明。

JWT 的结构

JWT 由三部分组成,用点(.)分隔:

  1. Header(头部) - 包含令牌类型和签名算法
  2. Payload(载荷) - 包含声明(claims)信息
  3. Signature(签名) - 用于验证令牌的完整性
xxxxx.yyyyy.zzzzz

JWT 的工作原理

  • 客户端登录认证后,服务器生成 JWT 并返回给客户端
  • 客户端在后续请求中携带 JWT(通常在 Authorization 头中)
  • 服务器验证 JWT 的有效性并处理请求
  • JWT 可以包含用户信息,避免频繁查询数据库

主要使用场景

  1. 身份认证:用户登录后获得 JWT,后续请求使用该令牌认证
  2. 信息交换:安全地在各方之间传输信息
  3. 单点登录(SSO):在多个应用间共享认证状态
  4. API 访问授权:为 API 调用提供访问权限验证

JWT 使用案例

以下是一个简单的 JWT 使用示例:

// 生成 JWT Token
String generateToken(String username) {Date now = new Date();Date expiryDate = new Date(now.getTime() + 86400000); // 24小时过期return Jwts.builder().setSubject(username).setIssuedAt(new Date()).setExpiration(expiryDate).signWith(SignatureAlgorithm.HS512, "secretKey").compact();
}// 验证 JWT Token
boolean validateToken(String token) {try {Jwts.parser().setSigningKey("secretKey").parseClaimsJws(token);return true;} catch (Exception e) {return false;}
}// 从 JWT 中获取用户信息
String getUsernameFromToken(String token) {Claims claims = Jwts.parser().setSigningKey("secretKey").parseClaimsJws(token).getBody();return claims.getSubject();
}

JWT 的优势

  • 无状态:服务器不需要存储会话信息
  • 跨域支持:可以在不同域之间使用
  • 移动友好:适合移动应用和 API
  • 自包含:包含所有必要的用户信息

注意事项

  • JWT 一旦签发,在有效期内始终有效(除非服务器端黑名单)
  • 敏感信息不应存储在 JWT 的 payload 中
  • 需要妥善保管签名密钥
  • 应设置合理的过期时间

JWT 是现代 Web 应用中广泛使用的认证和授权解决方案,特别适合分布式系统和微服务架构。

JWT Maven 依赖

使用 JWT 通常需要添加以下 Maven 依赖:

基础依赖

<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.5</version>
</dependency>
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.11.5</version><scope>runtime</scope>
</dependency>
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><version>0.11.5</version><scope>runtime</scope>
</dependency>

旧版本依赖(0.9.x 及以下)

<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version>
</dependency>

说明

  • jjwt-api:JWT API 接口
  • jjwt-impl:JWT 实现类
  • jjwt-jackson:JSON 处理支持
  • 建议使用 0.11.x 版本,支持 Java 8+ 并且模块化更好

以上部分内容由大模型生成,注意识别!

http://www.dtcms.com/a/424009.html

相关文章:

  • 网站在线留言怎么做行政法规
  • 语义网络(Semantic Net)对人工智能中自然语言处理的深层语义分析的影响与启示
  • 南通网站建设优化网站建设服务器配置
  • “AI+“行动下的可控智能体:GPT-5 与 GPT-OSS 高性能推理 安全可控 产业落地 GPT-OSS 一可控AI目前全球唯一开源解决方案
  • 零基础网站建设视频想做一个自己的网站怎么做
  • UWB实操:使用litepoint测试FCC 1ms PSD功率谱密度
  • 企业网站自己可以做吗工作室做什么项目好
  • 商丘做网站的电话怎样做自己公司的网站
  • 复旦华为提出首个空间理解和生成统一框架UniUGG,支持参考图像和任意视图变换的 3D 场景生成和空间视觉问答 (VQA) 任务。
  • InnoDB与MySQL复制的关键注意事项
  • 【python】五个容器
  • 网站后台信息发布这样做利用html做博客网站
  • SSM数字图书馆on33n(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 网站开发项目团队人员易车网汽车之家
  • 个人建站公司好看个人网页模板
  • 高端网站建设 源码wordpress去log
  • 杭州网站建设哪里好牡丹江有做网站的人吗
  • PHP转JAVA入门知识解析 (指南一)
  • Django之APPEND_SLASH配置爬坑
  • 连连建设跨境电商网站在线名片设计
  • dw和vs做网站跨境电商怎么注册开店
  • Meep 和 MPB 软件的关系:姊妹软件
  • 动易网站风格免费下载广州天河区必去的地方
  • Vue3 全局 API 转移详解
  • Vue中的计算属性和监视属性
  • Element UI 组件样式自定义详解与最佳实践
  • Kali Linux 2025.3 正式发布:更贴近前沿的安全平台
  • 做卡盟网站教程拓者网室内设计官网app
  • 一流的山西网站建设网站建设合同英文
  • CMakeLists.txt语法(四)