Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在研究令牌身份验证系统,对jsonwebtoken有几个问题_Javascript_Node.js_Jwt - Fatal编程技术网

Javascript 正在研究令牌身份验证系统,对jsonwebtoken有几个问题

Javascript 正在研究令牌身份验证系统,对jsonwebtoken有几个问题,javascript,node.js,jwt,Javascript,Node.js,Jwt,我有一个解耦的Vue.js前端+Node.js后端,现在我正在尝试实现一个令牌身份验证系统,但我有几个问题 jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' }, function(err, token) { console.log(token); }); 首先,为了生成令牌,该函数需要私钥。我有点困惑,这个密钥应该是什么样子的,是所有令牌都必须相同,还是应该是唯一的。还有,我应该把这把钥匙存放在哪里 我的第二个问题是有效载

我有一个解耦的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()还是只传递一个属性?

1,您的私有令牌应该具有足够的长度,以使其更难强制执行

2、所有代币都应相同

3、它应该安全地存储在服务器端。在不了解您的设置的情况下,无法回答此问题。但不要将其签入git,不要将其放入客户端(让每个人都看到)

4、不要在有效负载中放置机密/密码。这些不是加密的。您可以在不知道秘密的情况下获取任何令牌并在处解码它们

JWT缺少一个重要方面。在有效负载中,您可以验证有效负载是否是使用您的机密创建的。但是,有效负载本身未加密


因此,您可以在有效负载中放入任何您想要进行验证的内容。一个好的用例是用户ID。如果令牌上的验证签出,则您知道它是使用该机密创建的。但它的秘密是在客户端,每个客户端都可以创建一个有效的令牌。因此,请确保在服务器端对其进行保密。不要在令牌中放置密码或其他秘密。它们将100%可见,每个人都可以看到。

“我正在尝试实施令牌身份验证系统*”-为什么?您需要身份验证做什么?登录时将使用什么凭据?您需要会话状态吗?@Bergi令牌身份验证有问题吗?我需要身份验证,因为我想到的一些功能要求应用程序具有注册用户和身份验证,这样我就可以保护一些路由。电子邮件和密码将用于登录。有关您可能不需要(或不想要)令牌的原因,请参阅和