【发布时间】:2020-11-01 19:50:36
【问题描述】:
我有一个解耦的 Vue.js 前端 + Node.js 后端,现在我正在尝试实现一个令牌认证系统,但我有几个问题。
jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' }, function(err, token) {
console.log(token);
});
首先,为了生成令牌,该函数需要一个私钥/密钥。我有点困惑这个密钥应该是什么样子,以及它是否必须对所有令牌都相同,或者它应该是唯一的。另外我应该将这个密钥存储在哪里?
我的第二个问题是有效载荷应该由什么组成。在示例中,{ foo: 'bar' } 用作有效负载。在我的应用程序中,用户注册后,我将他的信息保存在数据库中,并得到一个如下所示的对象:
let user = {
username: 'Test1',
password: '$2a$12$lLnLRVHiI7yI4br.ys2aj.5EVcIjRD7BkV',
email: 'test1@gmail.com'
}
我只是将用户对象作为负载传递给 jwt.sign() 还是应该只传递一个属性?
【问题讨论】:
-
“我正在尝试实现令牌认证系统*” - 为什么?你需要认证做什么?什么凭据将用于登录?你需要会话状态吗?
-
@Bergi 令牌认证有问题吗?我需要身份验证,因为我想到的一些功能要求应用程序具有注册用户和身份验证,以便我可以保护一些路由。电子邮件和密码将用于登录。
-
请参阅 cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions 和 developer.okta.com/blog/2017/08/17/… 了解您可能不需要(或不想要)令牌的原因
标签: javascript node.js jwt