当用户访问我的域时,django会发出一个sessionid。当他试图用Facebook做Oauth时,他点击我网站上的一个按钮,重定向到Facebook.com。 Facebook重定向回我的域,但此时,用户的会话丢失,Django似乎正在发布一个新的会话变量。
我希望已删除的会话持续存在,因为我必须将访问者与我的网站的Facebook帐户相关联,但是当会话被删除时,登录的用户将被注销。
我怀疑这可能是与django的XSS保护相关的行为。当用户离开我们的网站登录Facebook时,如何使用户信息持续存在?
答案 0 :(得分:12)
您可能需要确认Cookie在创建时具有相同的域。这有时会引起问题。如果您要访问网站www.example.com并且OAuth回调指向example.com,那么您可能有两个单独的Cookie,一个用于www.example.com,另一个用于example.com
在浏览器上启用“始终询问”,并注意Cookie详细信息。确保“Host:”字段的值两次都相同。
此修复程序在.example.com
文件中为SESSION_COOKIE_DOMAIN
输入settings.py
之类的内容。
答案 1 :(得分:3)
我刚刚发现,如果你有两个Django应用程序在同一个域上运行,为了避免cookie冲突你可能希望为每个应用程序设置不同的SESSION_COOKIE_NAME。