我已经创建了多页应用程序和单页应用程序的混合,这需要认证。应用程序栈如下所示。
我有一个无反应登录页面,可以验证电子邮件和密码,生成JWT令牌并重定向到React应用程序。
当第一次在客户端加载react应用程序时,我想将这个令牌保存到react应用程序中。但我不知道该怎么做。这是如何做到的呢?
发布于 2018-07-12 04:02:27
使用localStorage的
只读
localStorage
属性允许您访问存储对象以了解文档的来源;存储的数据在浏览器会话中保存。localStorage
类似于sessionStorage
,只不过存储在localStorage
中的数据没有过期时间,而存储在sessionStorage
中的数据在页面会话结束时即当页面关闭时被清除。
基本虫流
当用户登录时,您将希望将令牌保存在客户端本地存储上:
window.localStorage.setItem('token', '2132434knfaskjdafnalenjgralejvnafjvk');
然后,当用户重新加载页面时,您将希望从localStorage获取它:
const jwt = window.localStorage.getItem('token');
最后,当用户注销时,我们将从用户存储中删除JWT:
window.localStorage.removeItem('token');
发布于 2018-07-12 04:28:03
我建议您将jwt存储在一个安全且仅为http的cookie中。这比本地存储安全得多。通过这种方式,您可以将应用程序从XSS攻击中保存下来。如果您有ssl,那么jwt劫持将很困难。
在本地存储中保存jwt使其可用于XSS攻击。只需在后端的响应中设置cookie即可。
例如:
res.cookie('jwt-token' , {'httpOnly': true , path:'path' , secure: true , maxAge: someNumber})
https://stackoverflow.com/questions/51297053
复制相似问题