【问题标题】:Apply same express session on multiple node js app在多个节点 js 应用程序上应用相同的快速会话
【发布时间】:2021-04-05 00:55:03
【问题描述】:

我正在使用 express js 开发微服务,其中 express-session 设置如下:

server.use(session({
    name: 'apps',
    resave: false,
    saveUninitialized: false,
    secret: 'secretToken',
    cookie: {
        sameSite: false,
        secure: false, // true
        httpOnly: false, // false
    }
}));

我对所有服务应用相同的设置。 但它只适用于只有一项服务。其他服务无法共享来自其他服务的相同数据,我将访问令牌放入 req.session 以让其他应用具有相同的访问令牌。

有没有办法让不同的服务使用同一个会话?

【问题讨论】:

    标签: node.js express microservices express-session


    【解决方案1】:

    默认的服务器端会话存储是MemoryStore。这意味着每个服务都将会话数据存储在自己的进程中。不同进程之间不能共享内存。

    为了让微服务共享会话数据,我们需要单独存储,例如connect-redisconnect-mongo

    所有微服务都连接redis或数据库服务器,在初始化express-session中间件时将它们用作会话数据存储。

    工作流程:

    客户端发送 HTTP 请求(会话 id 存储在 cookie 中)=> 服务 A 或服务 B 或服务 C => express-session 通过 session-id 从 redis 或数据库获取会话数据 => 做你的事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 2013-11-07
      • 1970-01-01
      相关资源
      最近更新 更多