繁体   English   中英

Express session - Session 在另一个选项卡上打开链接后丢失

[英]Express session - Session lost after opening a link on another tab

背景:

我有一个 nodejs 应用程序使用 express-session 进行 session 管理。 最近我们对该应用进行了安全检查,并开始使用安全的 cookies。 这是快速会话配置:

server.use(
    session({
        saveUninitialized: true,
        rolling: true,
        resave: true,
        proxy: true,
        secret: envConfig.sessionSecret,
        cookie: {
            maxAge: envConfig.sessionCookie.maxAge, 
            httpOnly: envConfig.sessionCookie.httpOnly, // was false before security checkup
            sameSite: true, // was false before security checkup
            secure: envConfig.sessionCookie.secure // was false before security checkup
        },
        name: envConfig.sessionKey,
        store: new MongoDBStore({
            uri: envConfig.sessMongoDB.uri,
            collection: envConfig.sessMongoDB.collection,
            expires: envConfig.sessMongoDB.expires,
            connectionOptions: {
                useNewUrlParser: true,
                useUnifiedTopology: true
            }
        })
    })
);

问题:

问题从这里开始。 此 session 管理运行良好且稳定。 但是,如果我们通过邮件或 whatsapp web 或任何消息传递应用程序共享任何链接,并且任何人点击该链接。 他们将在那里松动 session ,换句话说,该人从应用程序中退出。

似乎浏览器没有与新打开的选项卡共享当前的 cookies 并生成一个新的 session。

以前有没有人遇到过这个问题,我们如何克服这个问题?

更新 1:似乎问题出在 WhatsApp web 上。 当我们通过 WhatsApp web 打开链接时,我们会丢失 session

发布此问题后 1 天,我设法解决了此问题。 我忘了分享。 该问题与 cookies SameSite策略有关。

如果您对SameSite strict的价值。 如果您从另一个主机上的链接打开网页,则会导致 cookie 松动。

来自 MDN:

Cookies 将仅在第一方上下文中发送,不会与第三方网站发起的请求一起发送。

更多信息可以在这里找到: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM