Express Redis变量未持久化,未在Heroku上设置cookie(在本地工作)
我构建了一个graphql服务器,任何需要通过会话进行验证的查询都无法工作。我可以看到会话变量正在我的日志中设置,但它们在发出另一个请求时不会持久存在。例如,当我登录一个用户时,我将userId设置为会话变量,如下所示:Express Redis变量未持久化,未在Heroku上设置cookie(在本地工作),express,session,cookies,redis,express-session,Express,Session,Cookies,Redis,Express Session,我构建了一个graphql服务器,任何需要通过会话进行验证的查询都无法工作。我可以看到会话变量正在我的日志中设置,但它们在发出另一个请求时不会持久存在。例如,当我登录一个用户时,我将userId设置为会话变量,如下所示: SESSION: Session { cookie: { path: '/', _expires: 2031-04-23T16:32:48.065Z, originalMaxAge: 315360000000, httpOnly: true,
SESSION: Session {
cookie: {
path: '/',
_expires: 2031-04-23T16:32:48.065Z,
originalMaxAge: 315360000000,
httpOnly: true,
sameSite: 'lax',
secure: true
},
userId: 123456789
}
但是,当我进行查询以验证该用户时,会话如下所示:
Session {
cookie: {
path: '/',
_expires: 2031-04-23T16:32:26.998Z,
originalMaxAge: 315360000000,
httpOnly: true,
sameSite: 'lax',
secure: true
}
}
变量userId不再存在,我无法理解它为什么不存在
以下是配置会话的代码:
app.set('trust proxy', 1)
const RedisStore = connectRedis(session);
const redis = new Redis(process.env.REDIS_URL);
app.use(
session({
name: COOKIE_NAME,
store: new RedisStore({
client: redis,
disableTouch: true,
}),
cookie: {
maxAge: 1000 * 60 * 60 * 24 * 365 * 10, // 10 years
httpOnly: true,
sameSite: 'lax',
secure: __prod__,
},
secret: (process.env.SESSION_SECRET as string),
resave: false,
saveUninitialized: false,
})
);