我有两个独立的Express 4.x应用程序运行在同一台服务器(不同的端口),共享一个MongoDB实例。他们都使用不同的数据库,并有不同的会话秘密。登录到一个快速应用程序破坏其他(同一服务器)会话
我可以单独登录到应用程序A或B,而没有问题。我的会议得到保持,一切都很好。但是,如果我登录到A然后登录到B,则A中的会话被销毁(反之亦然)。
这两个应用程序具有几乎相同的本地身份验证。他们的serializeUser
和deserializeUser
是非常原始的(跟随Passport docs几乎到tee)。
看来,当登录到A和B时,req.session.passport
被破坏,导致req.user
无法在应用A上正确序列化,并且会话被认为是无效的。
我开始认为它与两个应用程序在同一台计算机(因此是域)上运行的事实不同,只有端口不同。
我认为你在这两个应用程序中使用相同的会话cookie名称。用两个不同的名字,希望一切都会好起来。 –
@VickyR如何定义会话cookie名称?其中一个配置选项是否有属性? – Erik
这里写的会话的代码是什么? –