Session 多个Express,在单个服务器、不同端口上使用Express会话应用程序

Session 多个Express,在单个服务器、不同端口上使用Express会话应用程序,session,express,express-session,Session,Express,Express Session,我正在多个端口下的单个服务器上使用express session运行多个MEAN应用程序。当我在应用程序A中进行身份验证时,会修改为另一个(应用程序B)建立的令牌。然后拒绝应用程序B的经过身份验证的用户会话 如何配置我的所有应用程序以独立地持久化和验证令牌?例如,在本地主机上,应用程序A在端口80上运行,应用程序B在端口90上运行。我希望用户能够在不中断其他用户的应用程序B会话的情况下验证和使用应用程序a 以下是我的app.js文件中与我的问题相关的代码: // Connect to datab

我正在多个端口下的单个服务器上使用express session运行多个MEAN应用程序。当我在应用程序A中进行身份验证时,会修改为另一个(应用程序B)建立的令牌。然后拒绝应用程序B的经过身份验证的用户会话

如何配置我的所有应用程序以独立地持久化和验证令牌?例如,在本地主机上,应用程序A在端口80上运行,应用程序B在端口90上运行。我希望用户能够在不中断其他用户的应用程序B会话的情况下验证和使用应用程序a

以下是我的app.js文件中与我的问题相关的代码:

// Connect to database
mongoose.connect(config.mongo.uri, config.mongo.options);

var connection = mongoose.createConnection(config.mongo.uri, config.mongo.options);

var app = express();

// enable CORS
app.use(cors());

// enable cookieParser
app.use(cookieParser());

// enable session
app.use(session({
    secret: config.secrets.session,
    resave: false,
    saveUninitialized: true,
    name: 'uniqueSessionId',
    store: new MongoStore(
        {
            mongooseConnection: connection
        }
    )
}));
Cookie(用于在中存储会话标识符)在给定主机名上的所有端口之间共享,这就是为什么您的应用程序相互干扰

文件建议如下:

如果在同一主机名上运行多个应用程序(这只是名称,即
localhost
127.0.0.1
;不同的方案和端口不会命名不同的主机名),则需要将会话cookie彼此分离。最简单的方法是简单地为每个应用程序设置不同的
name
s


根据文档,我尝试通过包含唯一名称来修改会话对象,但没有成功。这两个应用程序仍然相互干扰。您是否也删除了旧cookie?是的,我看到了应用程序cookie的新名称,以及一个名为“token”的cookie。我想知道是否每个应用程序都应该有一个token cookie,而不是一个?在我看来,令牌cookie是一个不断被每个应用程序修改的cookie。是的,这很有意义。你把jwt和会话饼干混在一起了吗?我不确定。我使用Passport和LocalStrategy来管理每个应用程序的身份验证。我不知道是否可以将特定于应用程序的令牌设置为未命名为“令牌”的cookie。在监视每个应用程序的登录时,我在浏览器中检查“令牌”,每次都会覆盖它。