如何共享登录会话?
How to share log in sessions?
我整天都在阅读有关 session 的内容,我希望有人能清楚地解释我如何在 app.example.io 和 example.io[= 之间共享 session 12=]
子域在技术上是一个完全不同的域,它不仅仅是浏览器,所以你必须使用 Access-Control-Allow-Credentials header 并传递护照凭证
以上是否属实,我是否应该不再担心配置我的 session 或如下所示的 cookie,而是专注于将凭据从一个域传递到另一个域?
// I have been trying to configure the domain property to no avail
app.use(cookieSession({
key: 'example.sid',
secret: 'something',
cookie: {
path: '/',
domain: '.example.io',
maxAge: 1000
}
}));
我已尝试配置我的 session 超过 24 小时,我确信我需要传递凭据,所以如果这是真的,我的问题是如何传递已通过 passport.js?
我的 node.js 服务器都在使用一个 express 应用程序,子域来自代理请求到 subdomain/app
的 npm 子域模块。因此,子域和域在技术上确实在服务器设置中共享相同的 session?
总而言之,我很困惑,如果有人能为我澄清一下,我会感到欣慰。
所以经过一番深入的研究,我的大部分时间都在思考这个问题。
我注意到 google 分析 cookie 适用于我所有的子域,因为在控制台中查看 cookie 上的域时,在查看我的 express cookie 时只有一个句点 .example.io
应用正在创建看起来像 app.example.io
& example.io
。所以显然我需要 cookie 域看起来像 .example.io
两个域。
我发现最适合此操作的会话代码如下。
app.use(session({
store: new RedisStore(),
key: 'example.sid',
secret: 'keyboard cat',
cookie:{ domain: '.example.io' }
}));
我几乎没有尝试使用 key
所以通过设置一个密钥它看起来有帮助,如果商店有任何事情也可以使用 IDK,但是在我的实时服务器上我安装了 redis 并将它包含在我的项目中,而不是确定这是否有所作为。
另请注意 cookie 中设置的域具有 .example.io
。这个成功了,我松了一口气,我会继续测试以确保我没有被愚弄。
希望这对某人有所帮助!
我整天都在阅读有关 session 的内容,我希望有人能清楚地解释我如何在 app.example.io 和 example.io[= 之间共享 session 12=]
子域在技术上是一个完全不同的域,它不仅仅是浏览器,所以你必须使用 Access-Control-Allow-Credentials header 并传递护照凭证
以上是否属实,我是否应该不再担心配置我的 session 或如下所示的 cookie,而是专注于将凭据从一个域传递到另一个域?
// I have been trying to configure the domain property to no avail
app.use(cookieSession({
key: 'example.sid',
secret: 'something',
cookie: {
path: '/',
domain: '.example.io',
maxAge: 1000
}
}));
我已尝试配置我的 session 超过 24 小时,我确信我需要传递凭据,所以如果这是真的,我的问题是如何传递已通过 passport.js?
我的 node.js 服务器都在使用一个 express 应用程序,子域来自代理请求到 subdomain/app
的 npm 子域模块。因此,子域和域在技术上确实在服务器设置中共享相同的 session?
总而言之,我很困惑,如果有人能为我澄清一下,我会感到欣慰。
所以经过一番深入的研究,我的大部分时间都在思考这个问题。
我注意到 google 分析 cookie 适用于我所有的子域,因为在控制台中查看 cookie 上的域时,在查看我的 express cookie 时只有一个句点 .example.io
应用正在创建看起来像 app.example.io
& example.io
。所以显然我需要 cookie 域看起来像 .example.io
两个域。
我发现最适合此操作的会话代码如下。
app.use(session({
store: new RedisStore(),
key: 'example.sid',
secret: 'keyboard cat',
cookie:{ domain: '.example.io' }
}));
我几乎没有尝试使用 key
所以通过设置一个密钥它看起来有帮助,如果商店有任何事情也可以使用 IDK,但是在我的实时服务器上我安装了 redis 并将它包含在我的项目中,而不是确定这是否有所作为。
另请注意 cookie 中设置的域具有 .example.io
。这个成功了,我松了一口气,我会继续测试以确保我没有被愚弄。
希望这对某人有所帮助!