在哪里发送JWT代币?

时间:2017-12-28 00:52:16

标签: javascript node.js reactjs express jwt

我使用JWT进行用户登录/注册,我有一个关于发送/接收令牌的问题。

目前,我将令牌作为属性存储在服务器中的JSON对象中,然后将其发送到前端。客户端收到对象后,会将令牌存储为cookie。从客户端到服务器的每个POST请求都有一个令牌属性,服务器的响应也会将令牌作为属性。

这没关系,还是我应该在请求/回复中将令牌作为标头发送?

使用:React(+ DOM),JavaScript,Express,Node.js

2 个答案:

答案 0 :(得分:4)

在Cookie中存储JWT令牌已经足够了。您不需要在请求正文中发送令牌或作为回复返回。

良好做法

  1. 将JWT存储在模式http-onlyis-secure: true的Cookie中,以便javascript无法看到此令牌,只能使用https安全层传输令牌。

  2. 在每个ajax请求中添加自定义请求标头,并在后端验证此标头以提示crsf攻击。

答案 1 :(得分:0)

嘿伙计们回到这篇文章,为那些处于同样情况的人添加更多信息。

使用fetch将请求发送到后端时,请务必添加

credentials: 'same-origin'

到您的fetch选项对象,以便向/从服务器发送/接收cookie。 我在节点后端代码中使用cookieParser来发送/接收cookie。确保至少使它们成为仅限http,并包含您需要或想要的任何其他安全选项。