我正在使用
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: '/'
},
})
);
欢迎任何解决方案。我不希望客户凭证被破坏,不惜任何代价
刚刚通过此线程找到了答案。 @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);
无论出于何种原因都不起作用