随着前端技术的飞速发展,越来越多的应用需要进行用户认证和授权。而 JSON Web Token (JWT) 是一种流行的身份验证和授权方式。npm 包 securejwt 封装了 JWT 的相关接口,为前端开发者提供了一种方便、安全的解决方案。
安装
在终端中运行以下命令:
npm install securejwt
使用方法
生成 token
const securejwt = require('securejwt'); const payload = { id: '123456', name: 'Alice' }; const secret = 'your-secret'; const token = securejwt.sign(payload, secret);
其中,payload 为需要传输的数据,secret 为加密密钥。该方法返回生成的 token。
校验 token
const securejwt = require('securejwt'); const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEyMzQ1NiIsIm5hbWUiOiJBbGljZSIsImlhdCI6MTYxNjIxODczM30.OPkPrzWtKNMQiizA-deO3Ywq_drOUqadyx_sPTKcx-E'; const secret = 'your-secret'; const payload = securejwt.verify(token, secret);
其中,token 为需要校验的 token,secret 为加密密钥。该方法返回 token 包含的 payload。
若 token 不合法,将会抛出错误。
使用选项
可以通过传入选项来配置生成 token 和校验 token 的行为。例如:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- ------- - - --- --------- ----- ------- -- ----- ------ - -------------- ----- ----- - ----------------------- ------- - ---------- ----- ---------- ------- --- ----- ------- - ----------------------- ------- - ----------- --------- ---
支持的选项包括:
expiresIn
: 设置 token 过期时间,单位为秒或时间字符串;notBefore
: 设置 token 有效时间,必须为时间字符串;audience
: 设置允许的目标;issuer
: 设置签发者;jwtid
: 设置 JWT ID;subject
: 设置主题;noTimestamp
: 设置不使用时间戳;header
: 设置 header 部分;algorithm
: 设置加密算法;keyid
: 设置公钥 ID;mutatePayload
: 设置是否改变 payload 对象;ignoreExpiration
: 设置是否忽略过期时间;clockTolerance
: 设置时钟容忍度;algorithms
: 设置支持的加密算法。
编码和解码
除了生成和校验 token 外,securejwt 还提供了一些辅助函数来编码和解码 token。
const securejwt = require('securejwt'); const encoded = securejwt.encode(header, payload, secret); const { header, payload } = securejwt.decode(token);
其中,encode
方法返回编码后的 token 字符串,decode
方法返回解码后的 header 和 payload 对象。
示例代码
生成 token:
const securejwt = require('securejwt'); const payload = { id: '123456', name: 'Alice' }; const secret = 'your-secret'; const token = securejwt.sign(payload, secret); console.log(token);
校验 token:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- ----- - --------------------------------------------------------------------------------------------------------------------------------------------------- ----- ------ - -------------- --- - ----- ------- - ----------------------- -------- --------------------- - ----- ----- - --------------------------- -
编码和解码:
-- -------------------- ---- ------- ----- --------- - --------------------- ----- ------ - - ---- -------- ---- ----- -- ----- ------- - - --- --------- ----- ------- -- ----- ------ - -------------- ----- ------- - ------------------------ -------- -------- --------------------- ----- ------- - -------------------------- ---------------------
结语
securejwt 是一个轻量级的 npm 包,可以方便地在前端应用中使用 JWT 进行身份认证和授权。使用该包需要保证 secret 的安全性,以避免发生安全问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600560a181e8991b448dee08