当前位置: 首页 > 面试题库 >

如何在同一个子域上获取不同的Django应用程序以共享会话cookie?

邢心水
2023-03-14
问题内容

我们在同一子域上部署了两个Django应用程序。一些高级用户需要在这些应用程序之间切换。我注意到,每次他们在应用程序之间跳动时,其会话cookie都会从Django接收一个新的会话ID。

除了在一个复杂的工作流程中,我很少使用Django会话表。如果用户在此工作流程中在应用程序之间跳动,则他们将失去会话并必须重新开始。

我浏览了Django会话代码,发现:

django.conf.settings.SECRET_KEY

用于对每个请求的会话执行完整性检查。如果完整性检查失败,则会创建一个新会话。意识到这一点,我将每个应用程序中的密钥更改为使用相同的值,认为这将允许完整性检查通过并允许它们共享Django会话。但是,它似乎没有用。

有没有办法做到这一点?我还想念其他东西吗?

提前致谢


问题答案:

我反而建议你设置SESSION_COOKIE_NAME不同的 值,这两个应用程序。您的用户最初仍将必须登录两次,但是他们的会话不会发生冲突-
如果他们先登录到应用程序A,然后登录到应用程序B,然后返回到A,则他们仍将拥有其A会话。

在Django实例之间共享会话可能不是一个好主意。如果您想要某种单点登录,请查看django-
cas之类的东西。您仍将有2个会话(您应有此会话),但该用户只能登录一次。



 类似资料:
  • 问题内容: 我运行foo.com。我在foo.com中有两个不同的应用程序:一个是foo.com/bar,另一个是foo.com/example。我使用会话来跟踪有关用户登录的信息,但是如果用户从foo.com/bar转到foo.com/example,则foo.com/example会看到用户从foo.com/启动的会话并使用该信息。我的问题是,如何同时为每个目录进行两个不同的会话? 问题答案:

  • 问题内容: 我想用一些登录用户创建一个Django应用程序。另一方面,由于我需要一些实时功能,因此我想使用Express.js应用程序。 现在,问题是,我不希望未经身份验证的用户访问Express.js应用程序的数据。因此,我必须在Express.js和Django应用程序之间共享会话存储。 我认为使用Redis是个好主意,因为volatile键非常适合这种情况,而且我已经在应用程序的另一部分使用

  • 问题内容: 我们希望将一个正在运行的应用程序拆分为两个不同的文件,以便能够更新一个应用程序而不影响另一个应用程序。每个Web应用程序将具有不同的UI,不同的用户和不同的部署时间表。 最简单的路径似乎是共享同一会话,因此如果应用程序A设置了应用程序B,则可以看到它。 有没有办法在同一个Tomcat实例中共享两个应用程序的状态? 我们的应用程序在专用的Tomcat 5.5上运行,在同一tomcat实例

  • 问题内容: 我的公司接管了一些旧的php应用程序。由于我们偏爱ASP.net且由于以前的开发人员缺少任何文档,因此我们不想在PHP开发上花费大量资源。为了实现新功能,我们将创建一个Asp.net应用程序,其外观与用户相同。我们要开发一种“共存”的Web应用程序。因此,我们必须在PHP和Asp.net Web应用程序项目之间共享会话,因为现有的MySQL数据库涉及用户管理。 (例如,链接“ A”指向

  • 我目前正在从事一个托管在域上的laravel项目。此应用程序的一部分(某些功能)必须位于不同的域上。我在我的网上找到了一条路。在php中,我用以下命令映射了所有路由: 以及需要以相同方式位于另一个域上,但具有不同域的路由。好啊在主域中,我创建了一个具有src属性的图像: 指向此方法路线: 它起作用了。我在不同的域上共享同一个会话,但是,我想问你们,对于这个案例场景,你们是否知道更好的方法。我知道这

  • 问题内容: 我正在忙于建立一个包含3个不同子域的平台-example.com,auth.example.com和api.example.com。它们与在服务器的不同端口上运行的3个单独的NodeJS应用程序一起运行。 这是设置会话的代码: 这三个应用程序的配置完全相同,并且它们都位于同一台服务器上。由于某些原因,会话未共享。我似乎记得几周前就已经共享了它们,现在一切都坏了- 我偷偷地怀疑,当我们将