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

在Redis上为Django和Express.js应用程序共享会话存储

长孙泉
2023-03-14
问题内容

我想用一些登录用户创建一个Django应用程序。另一方面,由于我需要一些实时功能,因此我想使用Express.js应用程序。

现在,问题是,我不希望未经身份验证的用户访问Express.js应用程序的数据。因此,我必须在Express.js和Django应用程序之间共享会话存储。

我认为使用Redis是个好主意,因为volatile键非常适合这种情况,而且我已经在应用程序的另一部分使用了Redis。

在Express.js应用程序上,我将具有以下代码:

[...]
this.sessionStore = new RedisStore;
this.use(express.session({
  // Private crypting key
  secret: 'keyboard cat', // I'm worried about this for session sharing
  store: this.sessionStore,
  cookie: {
    maxAge: 1800000
  }
}))
[...]

在Django方面,我会考虑使用django-redis-session应用程序。

那么,这是个好主意吗?不会有什么问题吗?特别是关于密钥,我不确定它们是否将共享相同的会话。


问题答案:

您将必须为Express或Django编写自定义会话存储。Django默认情况下(以及django-redis-
sessions中)将会话存储为腌制的Python对象。Express将会话存储为JSON字符串。Express,带有connect-
redis,sess:sessionId将会话存储在redis
的密钥下,而Django(对此不太确定)似乎将它们存储在key下sessionId。你也许能够使用的Django的Redis的会话作为一个基地,覆盖encodedecode_get_session_key_set_session_key和其他人也许只有几。您还必须确保以相同的方式存储和加密cookie。


显然,为Express创建一个可以腌制和释放Python对象的会话存储将变得更加困难。



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

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

  • 问题内容: 我想在一个应用程序和一个使用的应用程序之间共享服务器会话。我从这个要点中提取了大部分代码。 NodeJs代码: 它输出: PHP代码(我使用redis-session-php和Predis): 它输出: 问题: 我希望两个会话看起来都一样,但是却不一样(应用程序在同一域上运行)。使用from 作品设置值(但这些值不会在会话变量上)。我使用和找到了我认为可以工作的代码,但我认为这会使代码

  • 问题内容: 我们在同一子域上部署了两个Django应用程序。一些高级用户需要在这些应用程序之间切换。我注意到,每次他们在应用程序之间跳动时,其会话cookie都会从Django接收一个新的会话ID。 除了在一个复杂的工作流程中,我很少使用Django会话表。如果用户在此工作流程中在应用程序之间跳动,则他们将失去会话并必须重新开始。 我浏览了Django会话代码,发现: django.conf.se

  • 问题内容: 是否有使用节点,表达和redis / predis共享PHPSESSID的最新指南(或示例代码)? 我发现有1-2年的一些教程,它们都使用旧版本的Express或不使用Express。 Express cookie解析器也已弃用。 https://simplapi.wordpress.com/2012/04/13/php-and-node-js-session-share- redi/

  • 问题内容: 我需要帮助来了解Web应用程序的会话概念。我正在使用Express 3.0运行Node.js服务器。 我的目标是: 为每个登录的用户创建一个会话 存储此会话,并将其用于验证用户是否已登录(防止同时使用同一用户的两个设备)并限制对某些页面的访问(通过将会话ID与其他数据匹配) 我将使用MemoryStore保存会话(似乎最简单)。如果上述目标有意义,您能否提供有关如何实现这些目标的详尽解