我们在同一个子域上部署了几个Django应用程序。一些高级用户需要在这些应用程序之间跳转。我注意到每次他们在应用程序之间跳转时,他们的会话cookie都会从Django收到一个新的会话ID。
除了一个复杂的工作流程外,我不会使用Django会话表。如果用户在此工作流程中在应用程序之间跳转,则会丢失会话并且必须重新开始。
我挖掘了Django会话代码并发现了:
django.conf.settings.SECRET_KEY
用于对每个请求的会话执行完整性检查。如果完整性检查失败,则会创建新会话。实现这一点,我更改了每个应用程序中的密钥以使用相同的值,认为这将允许完整性检查通过并允许它们共享Django会话。但是,它似乎没有用。
有办法做到这一点吗?我错过了别的什么吗?
提前致谢
答案 0 :(得分:15)
我建议您为这两个应用设置SESSION_COOKIE_NAME
到不同的值。您的用户最初仍需要登录两次,但他们的会话不会发生冲突 - 如果他们登录到应用A,然后是应用B,然后返回A,他们仍会进行A会话。
Django实例之间的共享会话可能不是一个好主意。如果你想要某种单点登录,请查看类似django-cas的内容。你仍然会有2个会话(你应该这样做),但用户只能登录一次。
答案 1 :(得分:8)
我同意在Django实例之间共享会话可能不是一个好主意。如果你真的想,你可以:
所有这一切,我还没有尝试过这一切,所以你可能仍然有麻烦!