为什么我的cookie会在页面刷新时被删除?express-session,redis和react

ufj5ltwl  于 11个月前  发布在  Redis
关注(0)|答案(1)|浏览(712)

我使用express-session来设置一个带有redis会话存储的会话cookie。当用户登录时,我可以成功地设置一个cookie,如图所示,通过点击chrome中页面url旁边的“锁定”图标并查看cookie来登录他们。但是,当页面刷新时,我的用户会注销,因为cookie已经消失。

如何防止页面刷新时丢失该Cookie?

我的会话选项减去我的路由看起来像这样,我在https上运行我的客户端。

let sessionOptions = {
  secret: "REDACTED_FROM_STACKOVERFLOW",
  resave: true,
  name: "redisSession",
  expires: new Date(Date.now() + (60 * 1000 * 60 * 100000)),
  store: new RedisStore({client: redisClient}),
  cookie: {
    sameSite: 'none',
    secure: true, 
    httpOnly: true,
    maxAge: 1000 * 60 * 1000
  },
  rolling: true,
  saveUninitialized: true
};
app.use(cors({credentials: true, origin: 'https://localhost:8080'}));
const httpsOptions = {
  key: fs.readFileSync(process.env.localHostCertKeyPath),
  cert: fs.readFileSync(process.env.localHostPemPath)
}
app.use(cookieParser("REDACTED_FROM_STACKOVERFLOW"));
const httpsOptions = {
  key: fs.readFileSync(process.env.localHostCertKeyPath),
  cert: fs.readFileSync(process.env.localHostPemPath)
}
const server = https.createServer(httpsOptions, app).listen(
  constants.LOCAL_PORT,
  constants.HOST_NAME,
  () => {
    console.log("https://" + constants.HOST_NAME + ':' + constants.LOCAL_PORT + '/');
  }
);

字符串

  • Redis的日志显示没有错误。
  • cookie已设置。只是后来被删除了。我的登录和注销路由工作。
  • 在Chrome中看到的我的cookie的过期时间是在我刷新页面之后。
  • 如果页面没有刷新,则可以使用cookie访问req.session对象和set变量
  • 我正在使用expressexpress-sessionredisconnect-redis库。
  • 前端处于React状态。

编辑:
Request screenshot
全文:
redisSession=s:YGOMoRx_wWiIiqiYOYaIfcbbKfBujg7w.92wwY6TupTwVjRs4FLbWLxxSi6bm5XW7fDwNfXInW4Q; Path=/; Expires=Sun,07 Mar 2021 16:18:28 GMT; HttpOnly; SameSite=无

pdtvr36n

pdtvr36n1#

当页面刷新时,cookie消失了,但我的状态检查路由实际上再次设置了cookie,但chrome的“锁定”图标cookie计数没有显示它存在。因此,我的客户端在storage/cookies中有cookie,但没有呈现它已登录。我做了一个函数调用来更新我的视觉效果,出于某种原因,cookie出现在“锁定”下拉列表中。

相关问题