首页/新闻资讯/正文详情

jwt4cj创建JWT手把手教程:流式Builder链式调用,一步步签发你的第一个Token

发布时间:2026/9/24 16:35:23 来源:云帆数科 栏目:资讯中心
jwt4cj创建JWT手把手教程:流式Builder链式调用,一步步签发你的第一个Token
jwt4cj创建JWT手把手教程流式Builder链式调用一步步签发你的第一个Token【免费下载链接】jwt4cj一个用于生成和验证JSON Web Token的库项目地址: https://gitcode.com/Cangjie-TPC/jwt4cjjwt4cj 是面向仓颉语言的 JSON Web Token 库基于 RFC 7519 标准支持 JWT 的创建、解析与签名校验。本教程带你用内置的流式 Builder 链式调用一步步签发你的第一个 JWT Token零基础也能照着跑通。一、jwt4cj 是什么一分钟认识这个仓颉 JWT 库jwt4cj是一个轻量级的仓颉开源库把 JWT 最常用的三大能力封装成了简洁的 API✅JWT 创建通过JWT.create()获取 Builder链式设置各项 Claims 后一键签名✅JWT 解析JWT.decode(token)一行代码取出 Header / Payload 内容✅JWT 校验JWT.require(算法)构建校验器验证签名、过期时间、签发者等它支持HMACHS256/HS384/HS512、RSARS256/RS384/RS512、ECDSAES256/ES384/ES512三大类签名算法覆盖了大多数业务场景。核心入口类见 src/jwt.cj完整接口说明可查阅 doc/feature_api.md。项目整体功能规划创建 → 解析 → 校验的迭代路线如下图所示二、环境准备获取仓库并编译 jwt4cj1. 安装仓颉工具链确保本机已安装仓颉语言开发环境cjpm、cjc 可用。2. 获取 jwt4cj 源码git clone https://gitcode.com/Cangjie-TPC/jwt4cj3. 两种编译方式任选其一方式操作适合人群cjpm 编译该库依赖 stdx需先参考 stdx 官方文档配置CANGJIE_STDX_PATH路径然后执行cjpm build日常开发、库引用脚本编译下载 TPC-Test-Framework 编译脚本执行ciTest build跑测试用例仓库结构很简单src/是源码test/下是分层测试用例HLT/LLT/UTdoc/存放设计文档。依赖配置见 cjpm.toml。三、创建JWT全流程一张图看懂 Builder 链式调用在动手前先建立整体认知。jwt4cj 的创建流程是典型的Builder 流式风格JWT.create()→ 获取 Builder → 链式withXxx()填 Claims →sign(算法)→ 得到 JWT 字符串签发后的 Token 长这样Base64URL 编码的三段式eyJrMSI6InYxIiwiYWxnIjoiSFMyNTYiLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJpc3N1ZXIiLCJzdWIiOiJzdWJqZWN0Ii4uLn0.faVUD-cYR4nvaMYv5HMYk0pVfR9qRsCOWz28tgPoqdM └────────── Header ──────────┘ └──────────────── Payload ─────────────────┘ └────── 签名 ──────┘Header算法名alg、类型typ默认 JWT等由 src/jwt_creator.cj 中的 Builder 自动管理Payload标准 Claimsiss/sub/exp等 你的自定义业务数据签名用Header.Payload拼接后按所选算法计算防篡改四、手把手签发第一个 JWT四步链式调用第 1 步创建 Builderimport std.time.* import jwt4cj.* let builder JWT.create() // 流式起点返回 Builder 实例第 2 步填充标准 Claims注册声明jwt4cj 遵循 RFC 7529把标准 Claims 做成了语义化方法见 src/registered_claims.cj方法声明含义withIssuer(...)iss签发者withSubject(...)sub主题通常为用户withAudience([a1,a2])aud接收方withExpiresAt(DateTime)exp过期时间秒级时间戳withNotBefore(DateTime)nbf生效前时间withIssuedAt(DateTime)iat签发时间withJWTId(...)jtiToken 唯一 ID时间类 Claims 会自动转成自 epoch 起的秒数写入 Payload。第 3 步追加自定义 Claims业务字段用withClaim添加支持 String / Bool / Int64 / Float64 / DateTime / Map / List 等多种类型还有withArrayClaim数组、withNullClaimnull 值、withHeader和withPayload批量塞入 Map等进阶方法。let builder JWT.create() .withIssuer(jwt4cj-tutorial) // iss .withSubject(user-1024) // sub .withAudience([api-gateway]) // aud .withIssuedAt(DateTime.ofEpoch(second: 1700000000, nanosecond: 0)) .withExpiresAt(DateTime.ofEpoch(second: 1700003600, nanosecond: 0)) // 1小时后过期 .withJWTId(token-0001) // jti .withClaim(role, admin) // 自定义字符串 .withClaim(vip, true) // 自定义布尔 .withClaim(level, 3) // 自定义整数第 4 步选择算法并签名链式调用以sign(算法)收尾返回最终的 JWT 字符串let jwtStr builder.sign(Algorithm.HMAC256(admin)) println(jwtStr) // 输出类似eyJpc3MiOiJqd3Q0Y2otdHV0b3JpYWwiLC4uLg.eyJzdWIiOi4uLg.xxx签名xxx⚡sign()会自动在 Header 中写入alg如 HS256若未设置typ默认补上JWT。源码逻辑在 src/jwt_creator.cj 的sign方法中。一个完整的创建示例含 Map/List/数组/时间等全类型 Claims可参考 test/LLT/jwt/ 下的用例如jwt_create_test.cj系列。五、选择签名算法HMAC、RSA、ECDSA 怎么选算法统一在 src/algorithm.cj 中以静态方法暴露创建时直接传入sign()即可算法调用方式特点与适用场景HMACAlgorithm.HMAC256(密钥)对称加密密钥即字符串或字节数组最简单适合单体/内部服务RSAAlgorithm.RSA256(keyProvider)非对称加密私钥签、公钥验适合多方校验ECDSAAlgorithm.ECDSA256(keyProvider)非对称加密密钥更短、性能更好noneAlgorithm.none()不签名仅建议测试用生产环境慎用RSA / ECDSA 需要配合密钥提供者KeyProvider使用实现见 src/rsa_key_provider_impl.cj 与 src/ecdsa_key_provider_impl.cj。小提醒若算法通过 KeyProvider 初始化Header 中的kid密钥 ID会取自该 Provider此时手动withKeyId的值会被忽略。六、常见坑与进阶技巧1. Claim 值类型有白名单withPayload/withClaim只接受 Map、List、Bool、Int64、Float64、String、Time 及 null且 Map 的键值不能为 null。传入非法类型会抛出IllegalArgumentException并保证已设置的 Claims 不被污染先全量校验、再写入。2. 时间精度时间类 Claims 写入时按自 epoch 秒表示毫秒会被向下取整到整秒。3. 签了还要验签发只是上半场jwt4cj 同样提供校验能力JWT.require(算法)构建 Verification链式withIssuer/withSubject/acceptExpiresAt/acceptLeeway容忍时钟偏移等规则后build()得到校验器再verify(token)可精确捕获过期TokenExpiredException、签名不匹配AlgorithmMismatchException等异常。相关异常类定义在 src/ 目录下。4. 快速解析 Token拿到 Token 后JWT.decode(token)即可得到DecodedJWT逐字段读取getIssuer()、getSubject()、getExpiresAt()、getClaim(xxx)等非常方便。七、总结jwt4cj 签发 Token 速查回顾一下本教程的四步链式调用let jwtStr JWT.create() // ① 创建 Builder .withIssuer(app).withSubject(u1024) // ② 标准 Claims .withExpiresAt(expireTime) .withClaim(role, admin) // ③ 自定义 Claims .sign(Algorithm.HMAC256(secret)) // ④ 算法签名得到 Token想做的事用哪个 API创建 JWTJWT.create() Builder 链解析 JWTJWT.decode(token)校验 JWTJWT.require(算法)verify(token)jwt4cj 的创建、解析、校验三大能力已按路线图稳步推进欢迎结合 test/ 下的完整测试用例深入学习。从签发第一个 Token 开始把 JWT 安全认证加入你的仓颉项目吧延伸阅读仓库内资料API 接口文档doc/feature_api.md入口类src/jwt.cjBuilder 实现src/jwt_creator.cj算法定义src/algorithm.cj标准 Claims 常量src/registered_claims.cj创建测试用例test/LLT/jwt/【免费下载链接】jwt4cj一个用于生成和验证JSON Web Token的库项目地址: https://gitcode.com/Cangjie-TPC/jwt4cj创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

AI Agent 脚手架系统架构设计:基于 Spring AI + Google ADK 的三层架构与技术选型实践
AI Agent 脚手架系统架构设计:基于 Spring AI + Google ADK 的三层架构与技术选型实践

文档教程后端 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助,请给予支持(关注、… · 2026/9/24 16:35:23

palera1n 实战:A8–A11 老设备 iOS 越狱完整指南(含模式选择与排错)
palera1n 实战:A8–A11 老设备 iOS 越狱完整指南(含模式选择与排错)

palera1n 实战:A8–A11 老设备 iOS 越狱完整指南(含模式选择与排错) 【免费下载链接】palera1n Jailbreak for A8 through A11, T2 devices, on iOS/iPadOS/tvOS 15.0, bridgeOS 5.0 and higher. 项目地址: https://gitcode.com/GitHub_Tre… · 2026/9/24 16:35:17

Cangjie语言HTTP客户端Ginger:RequestBody的5种形态,从字符串、JSON模型到分块上传的完整指南
Cangjie语言HTTP客户端Ginger:RequestBody的5种形态,从字符串、JSON模型到分块上传的完整指南

Cangjie语言HTTP客户端Ginger:RequestBody的5种形态,从字符串、JSON模型到分块上传的完整指南 【免费下载链接】ginger Ginger是一个轻量级的httpClient库,支持多种请求配置,及使用函数方式注册拦截器链。 项目地址: https://gi… · 2026/9/24 16:35:17

WeChatMsg:免费开源,五分钟把微信聊天记录导出成文档,顺带生成年度报告
WeChatMsg:免费开源,五分钟把微信聊天记录导出成文档,顺带生成年度报告

WeChatMsg:免费开源,五分钟把微信聊天记录导出成文档,顺带生成年度报告 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https:… · 2026/9/24 17:04:55

RT-Thread 在先楫 HPM6P00EVK(RISC-V 双核)上的 BSP 移植与快速上手实战指南
RT-Thread 在先楫 HPM6P00EVK(RISC-V 双核)上的 BSP 移植与快速上手实战指南

操作系统嵌入式物联网嵌入式OSRTOS 【免费下载链接】rt-thread RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/ 项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread 点击查看 免费下载 本篇技术… · 2026/9/24 17:04:55

【Dify】YouTube全自动内容生成与多平台分发应用
【Dify】YouTube全自动内容生成与多平台分发应用

自媒体视频内容的生产和分发,已成为内容创业与个人品牌塑造的重要途径。高效的视频自动化处理工具,能够显著提升内容制作与运营的效率。 本文聚焦于YouTube及多平台自媒体场景,介绍一个覆盖从素材导入、音频转写、语义分析、文案生成、分段整理到成品分发的全流程工作流。通… · 2026/9/24 17:04:43

Kubernetes 云原生 CI/CD 落地实践:从 DevOps 到 GitOps 的持续构建与发布指南
Kubernetes 云原生 CI/CD 落地实践:从 DevOps 到 GitOps 的持续构建与发布指南

教程云原生容器编排 【免费下载链接】kubernetes-handbook Kubernetes 架构与生态:从云原生到 AI 原生基础设施的构建指南 项目地址: https://gitcode.com/gh_mirrors/ku/kubernetes-handbook 点击查看 免费下载 导读 本文以 kubernetes-handbook 仓库… · 2026/9/24 17:04:31

Presto Release 0.178 版本解读:内存治理、SQL 能力扩展与 Connector 稳定性改进
Presto Release 0.178 版本解读:内存治理、SQL 能力扩展与 Connector 稳定性改进

大数据数据库后端 【免费下载链接】presto The official home of the Presto distributed SQL query engine for big data 项目地址: https://gitcode.com/gh_mirrors/pre/presto 点击查看 免费下载 本文以 Presto 官方发布说明 release-0.178.rst 为骨架&#xff… · 2026/9/24 17:04:31

handy4cj邮箱与手机号校验实战:RFC 2822标准验证背后的简单原理
handy4cj邮箱与手机号校验实战:RFC 2822标准验证背后的简单原理

handy4cj邮箱与手机号校验实战:RFC 2822标准验证背后的简单原理 【免费下载链接】handy4cj 项目地址: https://gitcode.com/Cangjie-SIG/handy4cj handy4cj 是一个基于仓颉语言的实用工具库,内置 checkEmail 邮箱校验函数(严格遵循 R… · 2026/9/24 17:04:25

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码