首页 > 解决方案 > 在 JWT 中,sign() 方法

问题描述

当我在这个网站学习时,我是 JWT 概念的新手

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

在此行的上述链接中:

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

他只用两个参数编写了 jwt.sign(),但是当我看到他们发送 3 个参数的其他帖子时

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

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

标签: expressangular7

解决方案


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

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

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

// 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


推荐阅读