我使用JWT进行用户登录/注册,我有一个关于发送/接收令牌的问题。
目前,我将令牌作为属性存储在服务器中的JSON对象中,然后将其发送到前端。客户端收到对象后,会将令牌存储为cookie。从客户端到服务器的每个POST请求都有一个令牌属性,服务器的响应也会将令牌作为属性。
这没关系,还是我应该在请求/回复中将令牌作为标头发送?
使用:React(+ DOM),JavaScript,Express,Node.js
答案 0 :(得分:4)
在Cookie中存储JWT令牌已经足够了。您不需要在请求正文中发送令牌或作为回复返回。
良好做法
将JWT存储在模式http-only
和is-secure: true
的Cookie中,以便javascript无法看到此令牌,只能使用https安全层传输令牌。
在每个ajax请求中添加自定义请求标头,并在后端验证此标头以提示crsf攻击。
答案 1 :(得分:0)
嘿伙计们回到这篇文章,为那些处于同样情况的人添加更多信息。
使用fetch将请求发送到后端时,请务必添加
credentials: 'same-origin'
到您的fetch选项对象,以便向/从服务器发送/接收cookie。 我在节点后端代码中使用cookieParser来发送/接收cookie。确保至少使它们成为仅限http,并包含您需要或想要的任何其他安全选项。