我们在同一个子域上部署了几个 Django 应用程序。一些高级用户需要在这些应用程序之间跳转。我注意到每次它们在应用程序之间反弹时,它们的 session cookie 都会从 Django 接收一个新的 session ID。
除了在一个复杂的工作流程中,我很少使用 Django session 表。如果用户在此工作流中在应用程序之间跳转,他们将失去 session 并必须重新开始。
我仔细研究了 Django session 代码,发现:
django.conf.settings.SECRET_KEY
用于对每个请求的 session 执行完整性检查。如果完整性检查失败,则创建一个新 session 。意识到这一点后,我更改了每个应用程序中的 key 以使用相同的值,认为这将允许完整性检查通过并允许它们共享 Django session 。但是,它似乎没有用。
有没有办法做到这一点?我还缺少其他东西吗?
提前致谢
最佳答案
我建议您为这两个应用程序将 SESSION_COOKIE_NAME
设置为不同值。您的用户最初仍需要登录两次,但他们的 session 不会发生冲突 - 如果他们登录到应用 A,然后登录应用 B,然后返回到 A,他们仍将拥有他们的 A session 。
在 Django 实例之间共享 session 可能不是一个好主意。如果您想要某种单点登录,请查看类似 django-cas 的东西。您仍然会有 2 个 session (正如您应该的那样),但用户只会登录一次。
关于python - 如何在同一子域上获取不同的 Django 应用程序以共享 session cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/556907/