Django Rest Framework + React - token 与 session 身份验证

标签 django reactjs authentication django-rest-framework

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

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

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

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

我的问题:

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

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

编辑:

后来我意识到,为什么不将 token 存储在 session 中呢?

最佳答案

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

或者,您可以在浏览器的 cookie 中存储 token ,但这很容易受到 XSS 攻击和其他 JavaScript 攻击。为了提高安全性,您可以将 token 存储在 HttpOnly 中曲奇饼。 Cookie 将在浏览器关闭的选项卡/窗口中保留。

还要澄清大多数浏览器都内置了 cookie 处理功能。您的 react 状态位于用户空间中,并且位于与 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/

关于Django Rest Framework + React - token 与 session 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800026/

相关文章:

haskell - 库里霍华德对应和平等

django - 如何在通过 pip 安装的应用程序中包含 django 模板?

python - Django 有办法打开 HTTP 长轮询连接吗?

javascript - 如何显示openweathermap天气图标react.js

javascript - 我如何在渲染方法 React-Native 上调用数组对象中的 rowData 值

apache - 排除 htaccess 保护目录中的一个文件夹

security - .NET 4.0 客户端证书验证错误

Django默认语言

html - Django 不显示图像和渲染 CSS

javascript - 在不转换为用户时区的情况下以时区输入显示时间