在JWT中,sign()方法

时间:2019-07-02 15:09:57

标签: express angular7

在此网站上学习时,我是JWT概念的新手

https://code.tutsplus.com/tutorials/jwt-authentication-in-angular--cms-32006

在此行上的上述链接中:

  var token = jwt.sign(user, JWT_Secret);

他只用两个参数编写了jwt.sign(),但我看到的其他帖子却发送了三个参数

我怀疑jwt.sign()是正确的 2)如何创建secret_token 3)以及如何发送所有必需的参数以使用jwt.sign()方法发送

请帮助我,希望您理解我的问题,朋友们请帮助我

1 个答案:

答案 0 :(得分:0)

如果您阅读JWT文档,则该函数可以在两种模式下运行:同步(同步)和异步(异步)。函数可以根据提供的函数的参数数量和参数类型自动确定使用哪种方法,并且可以提供的参数是(按顺序):

  • 数据/有效载荷
  • 密钥/令牌
  • 选项/配置(可选,如果使用默认选项,则可以在此处使用回调)
  • 回调函数(可选,如果提供的话,将在异步模式下运行)

为说明这一点,请阅读以下代码:

// Synchronous
const syncToken = jwt.sign({payload: { x: 1, y: '2'}}, 'JWT_SECRET');
console.log(syncToken);

// Asynchronous
jwt.sign({payload: { x: 1, y: '2'}}, 'JWT_SECRET', (err, asyncToken) => {
  if (err) throw err;
  console.log(asyncToken);
});

对于秘密令牌,只需制作一个硬编码的令牌,而无需将其随机化,否则,即使有可能,您也无法始终如一地验证令牌。或者,您也可以使用RS256或ES256(使用公钥和私钥对)之类的算法来非对称地执行签名和验证。

我希望这个答案有帮助。

参考: https://github.com/auth0/node-jsonwebtoken