当用户访问我的域时,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/