简介
JSON Web Token(JWT)是一种开放标准(RFC 7519),用于在各方之间作为 JSON 对象安全地传输数据。JWT 经常用于身份验证和授权。@dsninjas/jwt 是一个 npm 包,用于方便地操作 JWT,在前端开发中有广泛的应用场景。
安装
使用 npm 命令安装 @dsninjas/jwt:
npm install @dsninjas/jwt
使用
生成 JWT
import {sign} from '@dsninjas/jwt'; const payload = { user_id: '123456', name: 'John Doe' }; const jwt = sign(payload, 'secret_key', {expiresIn: '1h'});
使用 @dsninjas/jwt 的 sign()
方法,传入需要加密的 payload、秘钥和选项即可生成一个 JWT 字符串。
解析 JWT
import {verify} from '@dsninjas/jwt'; const jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiMTIzNDU2IiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTYzNDM0MjIsImlzcyI6Im15c2VydmljZSJ9.02r7VnTWgmYj5z5nckn5Mb9P5oSL3tq_Sqvvo2k1tN0'; const decodedPayload = verify(jwt, 'secret_key');
使用 @dsninjas/jwt 的 verify()
方法,传入需要解析的 JWT 和秘钥即可得到解析后的 payload。
验证 JWT
-- -------------------- ---- ------- ------ -------- ---- ---------------- ----- --- - ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ----- ------- - - ----------- ---------- -- ----- ------- - ----------- ------------- ---------
使用 @dsninjas/jwt 的 verify()
方法也可以验证一个 JWT 是否合法。通过传入选项,我们可以对 JWT 的算法、签发人等进行限制从而防止 JWT 被任意篡改。
支持的选项
sign()
和 verify()
方法都支持传入选项,一下是支持的选项以及对应的功能:
- algorithm:指定 JWT 的签名算法,默认为 HS256。
- expiresIn:指定 JWT 的过期时间,默认为 1h。
- audience:指定该 JWT 的使用方。
- issuer:指定该 JWT 的签发人。
- subject:指定 JWT 所面向的用户。
- noTimestamp:是否忽略运行加入 JWT 的时间戳。
- keyid:JWK 的上下文链接,可以用于指定密钥的位置。
结语
@dsninjas/jwt 是一个极其简单的 npm 包,但它在前端开发中的地位非常重要。掌握 JWT 的相关知识,在 Web 应用开发中将会大有帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600572ad81e8991b448e8d1e