簡體   English   中英

如何跨子域共享快速會話?

[英]How to share express sessions across subdomains?

我正在使用 express-session 和 MongoDbStore 來存儲 session 個變量。 然而,在使用 vhost 實現子域后,子域之間不共享 session 變量。 我的session配置如下

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))

session變量存儲在MongoDB,但是每個子域都有不同的文檔。 我怎樣才能使這些 session 變量對我的所有子域通用?

到目前為止,我一直在嘗試:將域保持為“.example.com”,不包括路徑參數,不包括域參數,不包括 httpOnly 參數,使用 resave as true 但似乎沒有任何效果提前謝謝

我在瀏覽論壇中的其他解決方案時找到了解決方案,如果有人遇到此問題,請嘗試使用此快遞 function:

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();
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM