【问题标题】:What's a secure way to store token & auth state?存储令牌和身份验证状态的安全方法是什么?
【发布时间】:2020-09-28 21:13:38
【问题描述】:

这是我的场景:

当用户登录时,会进行 API 调用,如果他的凭据有效,则会返回一个令牌。我需要将身份验证状态(以保持用户登录)和令牌存储在某处。该令牌将用于进行其他 API 调用。

我读过这些帖子:123(和其他一些)似乎都相互矛盾;无论是localStoragecookies 还是JWT,都被不同的人认为是不安全的。我也读过react-redux,但我不确定。

现在我完全不知道哪种解决方案最适合我的需求,因为我是 reactJs 的新手。那么,什么是正确的方法呢?

【问题讨论】:

  • Redux 是正交的;它只是一个状态管理工具。 “正确”的方式取决于; “令牌”有些模糊。 API 调用给谁? 你的应用?外部应用?
  • @DaveNewton 每个用户都被分配了一个令牌。此令牌将用于对后端的 API 调用,该调用将获取数据以显示在 react 应用的不同页面上
  • 简单答案使用cookiesJWT's 不应该用于存储令牌,localStorage 不安全。我也在努力在 reactjs 上实现 cookie。
  • @Tony 是的,我终于使用了cookies。我使用了js-cookie (github.com/js-cookie/js-cookie)。如果您遇到问题,请检查一下;使用起来真的很简单
  • @jo12345678 终于有用了。非常感谢。

标签: reactjs cookies jwt local-storage token


【解决方案1】:

最常见的做法是将您的令牌存储在 cookie 中并将 HttpOnly 设置为 true,这样任何 javascript 代码都无法以编程方式读取您的令牌。

我想你使用axios作为ajax客户端,你可以这样发出请求

axios.get('https://example.com/api', {
  withCredentials: true
})

通过这样做,axios 会自动将您的 cookie 发送到远程服务器

【讨论】:

    猜你喜欢
    • 2010-09-27
    • 2013-02-12
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2017-04-27
    相关资源
    最近更新 更多