首页 > 解决方案 > Django Sessions:从服务器获取登录用户数据的正确方法?

问题描述

我使用 SessionAuthentication 设置了我的 API。一旦用户登录,我将他们重定向到他们在 React 中的个人资料页面。一旦他们被重定向到他们的个人资料页面,我想进行 REST 调用以检索他们的个人资料数据并将其插入页面上的适当位置。我看到了几种方法可以做到这一点:

  1. 当用户登录时,将他们的用户 ID 放入响应对象 (DRF) 中,然后将其存储在客户端的某个位置(Redux 存储、会话存储或本地存储)。然后,当他们被重定向到登录页面时,对 /users/users_id 进行 REST 调用。
  2. 使用 Django 会话,登录用户会自动绑定到每个请求。那么我什至需要在这里关注 Rest 吗?我可以调用 /users,如果用户通过身份验证,则返回他们的数据。

我将不胜感激。谢谢你。

标签: djangoreactjsauthenticationdjango-rest-frameworksession-cookies

解决方案


使用 SessionAuthentication,在成功登录后,浏览器会自动为该域(或 ip:port)保存一个 sessionId cookie。无论使用 Django 还是 React,发送请求都会从同一个域发送该 cookie,并对用户进行身份验证,使您的 request.user 成为用户。

您可以在检查页面时检查 cookie -> 应用程序 -> Cookies -> 您的域 -> sessionId

基本上,您可以通过 Django 登录,它也会使用 React 登录。无需手动存储任何内容。只需为两者使用相同的域。


推荐阅读