简介:
JWT 即:JSON Web Token,定义了一种紧凑的、自包含的方式,用于在网络应用环境间以 JSON 对象安全地传输信息。
JWT 是一个开放的行业标准 RFC 7519。JWT 传输的信息可以被验证和信任,因为它经过了数字签名。
JWT 一般被用来在身份提供者和服务提供者间传递被认证用户的身份信息,以便于从资源服务器获取资源,也可以增加一些额外的业务逻辑所需的声明信息。
JWT 常用于代替 Session,用于识别用户身份。传统上使用 Session 机制区别用户身份有两个缺点:一是占用服务器的存储资源,二是在集群部署下设计会非常复杂。JWT 完全可以解决 Session 方案存在的问题。
一,安装
$ npm install jsonwebtoken
二,用法
jwt.sign(payload, secretOrPrivateKey, [options, callback])
(异步)如果提供了回调,则使用err或JWT调用回调。
(同步)以字符串形式返回JsonWebToken
有效载荷可以是表示有效JSON的对象文字、缓冲区或字符串。
请注意,只有当有效载荷是对象文字时,才会设置exp或任何其他声明。未检查缓冲区或字符串有效负载的JSON有效性。
如果有效负载不是缓冲区或字符串,则会使用JSON.stringify将其强制转换为字符串。
secretOrPrivateKey是一个字符串(utf-8编码)、缓冲区、对象或KeyObject,包含HMAC算法的秘密或RSA和ECDSA的PEM编码私钥。如果是带有密码短语的私钥,则可以使用对象{key,passphrase}(基于加密文档),在这种情况下,请确保您通过了算法选项。使用RSA算法进行签名时,最小模数长度为2048,除非allowInsecureKeySizes选项设置为true。低于此大小的私钥将被拒绝,并出现错误。
选项:
算法(默认值:HS256)
expiresIn:以秒或描述时间跨度vercel/ms的字符串表示。
例如:60,“2天”,“10小时”,“7天”。数值被解释为秒计数。如果使用字符串,请确保提供时间单位(天、小时等),否则默认使用毫秒单位(“120”等于“120ms”)。
notBefore:以秒或描述时间跨度vercel/ms的字符串表示。
例如:60,“2天”,“10小时”,“7天”。数值被解释为秒计数。如果使用字符串,请确保提供时间单位(天、小时等),否则默认使用毫秒单位(“120”等于“120ms”)。
audience; issuer;jwtid; subject;noTimestamp;header;keyid
mutatePayload:如果为true,sign函数将直接修改payload对象。如果在对有效负载应用声明之后但在将其编码为令牌之前需要对其进行原