小编jpi*_*man的帖子

节点应用之间的共享会话?

我目前有两个独立的节点应用程序在两个不同的端口上运行,但共享相同的后端数据存储.我需要在两个应用程序之间共享用户会话,以便当用户通过一个应用程序登录时,他们的会话可用,并且他们似乎登录到另一个应用程序.在这种情况下,它是一个面向公众的网站和一个行政后端.

我们的设置如下:

  • 节点与快递
  • 护照正用于通过本地策略处理身份验证
  • 我们使用connect-redis来允许我们通过redis共享会话.
  • 我们的域名如下:www.mydomain.com和adm.mydomain.com

会话内容(和redis)的配置对于两个应用都是相同的:

session: {
    options: {
        secret: "my secret",
        cookie: {
            domain: "mydomain.com",
            maxAge:1000*60*60*24
        }
    },
    redis: {
        host: 'my host',
        maxAge: 86400000,
        secret: "my secret"
    }
}
Run Code Online (Sandbox Code Playgroud)

app.js中会话内容的配置如下所示:

if ( app.settings.env === "production" ) {
    session.options.store = new RedisStore(session.redis);
}
app.use(express.session(session.options));
app.use(passport.initialize());
app.use(passport.session({ secret: 'a different secret' }));
Run Code Online (Sandbox Code Playgroud)

我期望它做什么:允许我们在两个应用程序之间的cookie中看到相同的会话ID.

所以我的问题是:如何设置express,redis和passport,以便您可以在不同的子域之间共享会话?

session-state redis node.js express

8
推荐指数
1
解决办法
5131
查看次数

标签 统计

express ×1

node.js ×1

redis ×1

session-state ×1