如何跨子域共享快速会话?
How to share express sessions across subdomains?
我正在使用 express-session 和 MongoDbStore 来存储会话变量。
然而,在使用 vhost 实现子域后,会话变量不会在子域之间共享。
我的会话配置如下
app.use(session({
secret: process.env.EXPRESS_SECRET,
cookie: {
path : '/',
domain : 'example.com',
httpOnly : false,
maxAge : 1000*60*60*24*7
},
store: store,
resave: false,
}))
虚拟主机代码示例:
app.use(vhost('login.example.com' , loginApp))
app.use(vhost('some.example.com' , someApp))
会话变量存储在MongoDB中,但每个子域都有不同的文档。
我怎样才能使这些会话变量对我的所有子域通用?
到目前为止我尝试过的是:
保持domain为'.example.com',不包括path参数,不包括domain参数,不包括httpOnly参数,使用resave as true
但似乎没有任何效果
提前谢谢你
我在浏览论坛中的其他解决方案时找到了解决方案,
如果有人遇到此问题,请尝试使用此快速功能:
app.use(function(req, res, next) {
// Access-Control-Allow-Origin only accepts a string, so to provide multiple allowed origins for requests,
// check incoming request origin against accepted list and set Access-Control-Allow-Origin to that value if it's found.
// Setting this value to '*' will allow requests from any domain, which is insecure.
var allowedOrigins = ['https://subdomain1.domain.com', 'https://subdomain2.domain.com' , 'https://subdomain3.domain.com'];
var acceptedOrigin = allowedOrigins.indexOf(req.headers.origin) >= 0 ? req.headers.origin : allowedOrigins[0];
res.header("Access-Control-Allow-Origin", acceptedOrigin);
next();
});
我正在使用 express-session 和 MongoDbStore 来存储会话变量。 然而,在使用 vhost 实现子域后,会话变量不会在子域之间共享。 我的会话配置如下
app.use(session({
secret: process.env.EXPRESS_SECRET,
cookie: {
path : '/',
domain : 'example.com',
httpOnly : false,
maxAge : 1000*60*60*24*7
},
store: store,
resave: false,
}))
虚拟主机代码示例:
app.use(vhost('login.example.com' , loginApp))
app.use(vhost('some.example.com' , someApp))
会话变量存储在MongoDB中,但每个子域都有不同的文档。 我怎样才能使这些会话变量对我的所有子域通用?
到目前为止我尝试过的是: 保持domain为'.example.com',不包括path参数,不包括domain参数,不包括httpOnly参数,使用resave as true 但似乎没有任何效果 提前谢谢你
我在浏览论坛中的其他解决方案时找到了解决方案, 如果有人遇到此问题,请尝试使用此快速功能:
app.use(function(req, res, next) {
// Access-Control-Allow-Origin only accepts a string, so to provide multiple allowed origins for requests,
// check incoming request origin against accepted list and set Access-Control-Allow-Origin to that value if it's found.
// Setting this value to '*' will allow requests from any domain, which is insecure.
var allowedOrigins = ['https://subdomain1.domain.com', 'https://subdomain2.domain.com' , 'https://subdomain3.domain.com'];
var acceptedOrigin = allowedOrigins.indexOf(req.headers.origin) >= 0 ? req.headers.origin : allowedOrigins[0];
res.header("Access-Control-Allow-Origin", acceptedOrigin);
next();
});