express - 在 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() 方法中发送
请帮助我,希望您能理解我的问题,请朋友们帮助我
解决方案
如果您阅读 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 等算法(使用公钥和私钥对)执行非对称签名和验证。
我希望这个答案有帮助。
推荐阅读
- omnet++ - 如何在 Omnet++ 项目中查找基本安全消息的数量?
- javascript - javascript window-dollarsign 方法;alert() 中的冒号
- python - 如何聚合唯一 id 具有多行且另一列具有不同值的分类数据?
- c++ - C++:创建一个模板函数,只允许继承特定接口的类?
- vb.net - 在UiPath中用VB提取最后一个非零数字之前的所有数字
- python - 如何将字符串从 Python 套接字发送到 C 套接字?
- spring-boot - Spring Boot 批处理作业识别
- python - 在包含数组的python列表中查找重复项
- javascript - Angular 8/9 - Firebase CRUD - 更新
- c++ - 从 C 包装器创建 C++ 对象