【问题标题】:Django Rest Framework + React - token vs session authenticationDjango Rest Framework + React - 令牌与会话身份验证
【发布时间】:2019-01-18 20:49:00
【问题描述】:

虽然在 SO 上有很多关于这个主题(或密切相关)的帖子,但我没有找到我想要的。

正如标题所示,我使用 Django Rest Framework 作为后端,并使用 React 作为前端。

现在我实现了令牌身份验证,它运行良好。唯一的问题是token存储在React的状态中,如果用户刷新页面,他就不再登录了(token丢失了)。

所以,现在我想切换到会话身份验证,因为问题已经解决了。但这需要我做一些研究,在我去那里之前,我想知道这是否是最好的选择。

我的问题:

我是否需要使用会话身份验证来让用户保持登录状态,即使 React 的状态发生变化。或者我也可以通过令牌身份验证来实现相同的目标(以安全和负责任的方式?)

我想我可以将令牌保存在 cookie 中,但这对我来说似乎不安全。

编辑:

后来我意识到,为什么不将令牌存储在会话中?

【问题讨论】:

    标签: django reactjs authentication django-rest-framework


    【解决方案1】:

    SessionAuthentication 将是实现您想要的最直接的方法。配置在http://www.django-rest-framework.org/api-guide/authentication/#setting-the-authentication-scheme 中描述。这将在浏览器处理的cookie 中设置会话ID。

    或者,您可以在浏览器的 cookie 中存储一个令牌,但这很容易受到 XSS 攻击和其他 javascript 攻击。为了提高安全性,您可以将令牌存储在 HttpOnly cookie 中。 cookie 将在浏览器关闭选项卡/窗口时保持不变。

    还要澄清大多数浏览器都内置了 cookie 处理。你的反应状态在用户态,并且与 cookie 存储在不同的内存空间中。

    更多信息:

    1. Ask HN: Cookies vs. JWT vs. OAuth
    2. https://developer.okta.com/blog/2017/08/17/why-jwts-suck-as-session-tokens
    3. http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/

    【讨论】:

      猜你喜欢
      • 2014-04-14
      • 2018-12-11
      • 1970-01-01
      • 2020-09-29
      • 2019-02-20
      • 1970-01-01
      • 2021-05-22
      • 2015-12-15
      • 2020-09-12
      相关资源
      最近更新 更多