jsonwebtoken 文档

jsonwebtoken

用法

jwt.sign(payload, secretOrPrivateKey, [options, callback])

(异步)如果提供回调,则使用err或JWT 调用回调。

(同步)将JsonWebToken返回为字符串。

payload必须是一个object, buffer或者string。请注意, exp只有当payload是object字面量时才可以设置。
secretOrPrivateKey 是包含HMAC算法的密钥或RSA和ECDSA的PEM编码私钥的string或buffer。
options:

  • algorithm:加密算法(默认值:HS256)

  • expiresIn:以秒表示或描述时间跨度zeit / ms的字符串。如60,"2 days","10h","7d",Expiration time,过期时间

  • notBefore:以秒表示或描述时间跨度zeit / ms的字符串。如:60,"2days","10h","7d"

  • audience:Audience,观众

  • issuer:Issuer,发行者

  • jwtid:JWT ID

  • subject:Subject,主题

  • noTimestamp

  • header

如果payload不是buffer或string,它将被强制转换为使用的字符串JSON.stringify()。
在expiresIn,notBefore,audience,subject,issuer没有默认值时。也可以直接在payload中用exp,nbf,aud,sub和iss分别表示,但是你不能在这两个地方同时设置。
请记住exp,nbf,iat是NumericDate类型。
生成的jwts通常会包含一个iat值除非指定了noTimestamp。如果iat插入payload中,则将使用它来代替实际的时间戳来计算其他事情,诸如options.expiresIn给定一个exp这样的时间间隔。

// sign with default (HMAC SHA256)
var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar' }, 'shhhhh');
//backdate a jwt 30 seconds
var older_token = jwt.sign({ foo: 'bar', iat: Math.floor(Date.now() / 1000) - 30 }, 'shhhhh');

// sign with RSA SHA256
var cert = fs.readFileSync('private.key');  // get private key
var token = jwt.sign({ foo: 'bar' }, cert, { algorithm: 'RS256'});

// sign asynchronously
jwt.sign({ foo: 'bar' }, cert, { algorithm: 'RS256' }, function(err, token) {
  console.log(token);
});

Token Expiration (exp claim)

签署1小时期限的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])

验证token的合法性

jwt.decode(token [,options])

(同步)返回解码没有验证签名是否有效的payload。
警告:这不会验证签名是否有效。你应该不为不可信的消息使用此。你最有可能要使用jwt.verify()。

错误与代码

TokenExpiredError
如果令牌过期,则抛出错误。
错误对象:

  • name:'TokenExpiredError'

  • message:'jwt expired'

  • expiredAt:[ExpDate]

JsonWebTokenError
错误对象:

    • name:'JsonWebTokenError'

    • message:

      • jwt异常

      • jwt签名是必需的

      • 无效签名

      • jwt观众无效 预期:[OPTIONS AUDIENCE]

      • jwt发行人无效。预期:[OPTIONS ISSUER]

      • jwt id无效。预期:[OPTIONS JWT ID]

      • jwt主题无效。预期:[OPTIONS SUBJECT]

posted @ 2021-02-07 22:11  mrt_yy  阅读(250)  评论(0编辑  收藏  举报