使用 secure: true 时 Cookie 未保存在客户端设备上

问题描述 投票:0回答:1

我正在使用

express-session
中间件来维护会话,但是使用
secure: true
cookie 不会在客户端设备上创建,而会在服务器端创建。协议是
https
。所以我相信应该创建cookie。

app.use(
  session({
    secret: process.env.SESSION_SECRET,
    resave: false,
    saveUninitialized: false,
    store: MongoStore.create({
      mongoUrl: process.env.DATABASE_URL,
      dbName: 'siteData',
      touchAfter: 24 * 3600, // time period in seconds
      autoRemove: "interval",
      autoRemoveInterval: 10,
    }),
    cookie: {
      name: 'Session',
      maxAge: 2 * 24 * 60 * 60 * 1000,
      secure: !(process.env.NODE_ENV !== 'production'),
      path: '/'
    },
  })
);

欢迎任何解决方案。我不希望客户凭证被破坏,不惜任何代价

javascript node.js cookies express-session
1个回答
-1
投票

刚刚通过此线程找到了答案。 @dgreisen 的精彩回答。通过在代码中添加

proxy: true
解决了这个问题。

    app.use(
      session({
        secret: process.env.SESSION_SECRET,
        proxy: true,
        resave: false,
        saveUninitialized: false,
        store: MongoStore.create({
          mongoUrl: process.env.DATABASE_URL,
          dbName: 'siteData',
          touchAfter: 24 * 3600, // time period in seconds
          autoRemove: "interval",
          autoRemoveInterval: 10,
        }),
        cookie: {
          name: 'Session',
          maxAge: 2 * 24 * 60 * 60 * 1000,
          secure: true,
          path: '/'
        },
      })
    );

附注

app.set('trust-proxy', 1);
无论出于何种原因都不起作用

© www.soinside.com 2019 - 2024. All rights reserved.