jsonwebtoken中文文档
jsonwebtoken
用法
jwt.sign(payload, secretOrPrivateKey, [options, callback])
(異步)如果提供回調(diào),則使用err或JWT 調(diào)用回調(diào)。
(同步)將JsonWebToken返回為字符串。
payload必須是一個(gè)object, buffer或者string。請(qǐng)注意, exp只有當(dāng)payload是object字面量時(shí)才可以設(shè)置。
secretOrPrivateKey 是包含HMAC算法的密鑰或RSA和ECDSA的PEM編碼私鑰的string或buffer。
options:
algorithm:加密算法(默認(rèn)值:HS256)
expiresIn:以秒表示或描述時(shí)間跨度zeit / ms的字符串。如60,"2 days","10h","7d",Expiration time,過期時(shí)間
notBefore:以秒表示或描述時(shí)間跨度zeit / ms的字符串。如:60,"2days","10h","7d"
audience:Audience,觀眾
issuer:Issuer,發(fā)行者
jwtid:JWT ID
subject:Subject,主題
noTimestamp
header
如果payload不是buffer或string,它將被強(qiáng)制轉(zhuǎn)換為使用的字符串JSON.stringify()。
在expiresIn,notBefore,audience,subject,issuer沒有默認(rèn)值時(shí)。也可以直接在payload中用exp,nbf,aud,sub和iss分別表示,但是你不能在這兩個(gè)地方同時(shí)設(shè)置。
請(qǐng)記住exp,nbf,iat是NumericDate類型。
生成的jwts通常會(huì)包含一個(gè)iat值除非指定了noTimestamp。如果iat插入payload中,則將使用它來代替實(shí)際的時(shí)間戳來計(jì)算其他事情,諸如options.expiresIn給定一個(gè)exp這樣的時(shí)間間隔。
Token Expiration (exp claim)
簽署1小時(shí)期限的token:
jwt.sign({exp: Math.floor(Date.now() / 1000) + (60 * 60),data: 'foobar' }, 'secret');使用此庫生成令牌的另一種方法是:
jwt.sign({data: 'foobar' }, 'secret', { expiresIn: 60 * 60 });//or even better:jwt.sign({data: 'foobar' }, 'secret', { expiresIn: '1h' });jwt.verify(token,secretOrPublicKey,[options,callback])
驗(yàn)證token的合法性
jwt.decode(token [,options])
(同步)返回解碼沒有驗(yàn)證簽名是否有效的payload。
警告:這不會(huì)驗(yàn)證簽名是否有效。你應(yīng)該不為不可信的消息使用此。你最有可能要使用jwt.verify()。
錯(cuò)誤與代碼
TokenExpiredError
如果令牌過期,則拋出錯(cuò)誤。
錯(cuò)誤對(duì)象:
name:'TokenExpiredError'
message:'jwt expired'
expiredAt:[ExpDate]
JsonWebTokenError
錯(cuò)誤對(duì)象:
name:'JsonWebTokenError'
-
message:
jwt異常
jwt簽名是必需的
無效簽名
jwt觀眾無效 預(yù)期:[OPTIONS AUDIENCE]
jwt發(fā)行人無效。預(yù)期:[OPTIONS ISSUER]
jwt id無效。預(yù)期:[OPTIONS JWT ID]
jwt主題無效。預(yù)期:[OPTIONS SUBJECT]
總結(jié)
以上是生活随笔為你收集整理的jsonwebtoken中文文档的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lampapache+mysql+php
- 下一篇: 2017.5.23 -- 学习记录