jsonwebtoken用法jwt.sign(payload,secretOrPrivateKey,[options,callback])(asynchronous)如果提供了callback,用err或者JWT调用callback。(同步)将JsonWebToken作为字符串返回。payload必须是对象、缓冲区或字符串。请注意,只有当有效负载是对象文字时,才能设置exp。secretOrPrivateKey是一个字符串或缓冲区,其中包含HMAC算法的密钥或RSA和ECDSA的PEM编码私钥。options:algorithm:加密算法(默认:HS256)如60,"2days","10h","7d",Expirationtime,过期时间notBefore:表示或描述时间跨度zeit/ms的字符串,单位秒。如:60,"2days","10h","7d"audience:Audience,audienceissuer:Issuer,issuerjwtid:JWTIDsubject:Subject,subjectnoTimestampheader如果payload不是buffer或者string,会强制转换为使用了一个StringJSON.stringify()。当expiresIn、notBefore、audience、subject、issuer没有默认值。也可以在payload中直接使用exp、nbf、aud、sub、iss,但不能同时在两处设置。请记住,exp、nbf、iat属于NumericDate类型。除非指定noTimestamp,否则生成的jwts通常会包含一个iat值。如果iat被插入到payload中,它将被用来代替实际的时间戳来计算其他的东西,比如options.expiresIn给定一个exp这样的时间间隔。//使用默认签名(HMACSHA256)varjwt=require('jsonwebtoken');vartoken=jwt.sign({foo:'bar'},'shhhhh');//回溯jwt30秒varolder_token=jwt.sign({foo:'bar',iat:Math.floor(Date.now()/1000)-30},'shhhhh');//使用RSASHA256varcert=fs.readFileSync('private.key')签名;//获取私钥vartoken=jwt.sign({foo:'bar'},cert,{algorithm:'RS256'});//异步签名jwt.sign({foo:'bar'},cert,{algorithm:'RS256'},function(err,token){console.log(token);});TokenExpiration(expclaim)签署一个1小时的令牌:jwt.sign({exp:Math.floor(Date.now()/1000)+(60*60),数据:'foobar'},'秘密');使用此库生成令牌的另一种方法是:jwt.sign({data:'foobar'},'secret',{expiresIn:60*60});//或更好:jwt.sign({data:'foob??ar'},'秘密',{expiresIn:'1h'});jwt.verify(token,secretOrPublicKey,[options,callback])验证令牌的合法性jwt.decode(token[,options])(同步)返回一个有效负载,该负载在不验证签名是否有效的情况下进行解码。警告:这不会验证签名是否有效。您不应该将它用于不受信任的消息。您很可能想使用jwt.verify()。代码错误TokenExpiredError如果令牌已过期,则会引发错误。错误对象:名称:'TokenExpiredError'消息:'jwtexpired'expiredAt:[ExpDate]JsonWebTokenError错误对象:名称:'JsonWebTokenError'消息:需要jwt异常jwt签名无效签名jwt观众无效预期:[OPTIONSAUDIENCE]jwt问题人无效。预期:[OPTIONSISSUER]无效的jwtid。预期:[OPTIONSJWTID]无效的jwt主题。预期:[选项主题]
