虽然 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 存储不同的内存空间中。
更多信息:
关于Django Rest Framework + React - token 与 session 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800026/