我有两个节点应用程序使用端口3000和5000.当我在localhost上运行它时没有任何错误运行。但是当两个不同的终端同时运行两个时,最后一个仍然执行,第一个销毁会话并重定向到登录点击任何页面后的页面。之后点击最后一页任意页面时,他们也会丢失会话并重定向到登录。我想要两个应用程序运行。
这是管理员应用的会话和端口
admin.use(session({
secret : 'ssshhhhh',
proxy : true,
resave : true,
saveUninitialized : true
}));
admin.set('port', process.env.PORT || 5000);
var debug = require('debug')('Admin App');
var server = admin.listen(admin.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
,这适用于用户应用
app.use(session({
secret : 'ssshhhhh',
proxy : true,
resave : true,
saveUninitialized : true
}));
app.set('port', process.env.PORT || 3000);
var debug = require('debug')('User App');
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
答案 0 :(得分:0)
问题在于您的会话选项。对于管理员和用户应用程序,选项中没有定义会话名称。因此,将使用默认的session_name,这两个应用程序都是相同的。因此,会话将在同时运行时进行折腾。
要解决此问题,请为会话对象添加唯一名称选项,如下所示:
admin.use(session({
name: 'admin_cookie',
secret : 'ssshhhhh',
proxy : true,
resave : true,
saveUninitialized : true
}));
app.use(session({
name: 'user_cookie',
secret : 'ssshhhhh',
proxy : true,
resave : true,
saveUninitialized : true
}));
答案 1 :(得分:0)
到目前为止,我发现的最好方法是使用并发调用的包:
https://www.npmjs.com/package/concurrently
package.json配置如下对我有用:
"scripts": {
"start": "node server.js",
"server": "nodemon server.js --ignore client",
"client": "npm start --prefix client",
"dev": "concurrently \"npm run server\" \"npm run client\""
}