从另一个域重定向时 Django session 被丢弃

标签 django oauth

当用户访问我的域时,django 会发出一个 sessionid。当他尝试使用 Facebook 进行 Oauth 时,他单击我网站上的一个按钮,该按钮会重定向到 Facebook.com。 Facebook 重定向回我的域,但此时,用户的 session 丢失,Django 似乎正在发出一个新的 session 变量。

我希望删除的 session 继续存在,因为我必须将我网站的访问者与其 Facebook 帐户关联起来,但是当 session 删除时,登录的用户就会注销。

我怀疑这可能是与 django 的 XSS 保护有关的行为。当用户离开我们的网站并登录 Facebook 时,如何使用户信息保留下来?

最佳答案

您可能需要确认 Cookie 在创建时具有相同的域。这有时会导致问题。如果您要访问网站 www.example.com 并且 OAuth 回调指向 example.com,那么您可能有两个单独的 cookie,一个用于 www.example.com,另一个用于 example.com

打开浏览器上的“始终询问”并注意 cookie 详细信息。确保“主机:”字段的值两次相同。

修复方法是在 settings.py 文件中为 SESSION_COOKIE_DOMAIN 输入类似 .example.com 的内容。

关于从另一个域重定向时 Django session 被丢弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628614/

相关文章:

django - 如何使用 systemd 设置 gunicorn 读取自定义设置

facebook - 使用 oAuth 重新请求 Facebook 权限不起作用

java - 永无止境的故事: Twitter Authentication

python - 如何使用由南管理的现有应用程序设置 django-hstore?

Android 开发 - 回调 URL 无效... (0_o)

java - QuickBooks 在线编程访问

javascript - 验证服务帐户以使用 JavaScript 客户端库调用 Google API

css - 仅当从 Windows 查看实时站点时,Webapp Roboto 字体异常

python - 在 Ubuntu Server 16.04LTS 上将 JSON 写入文件导致 Unicode 错误

django - 如何进行翻译?