express-session刷新后session丢失

发布于 2022-09-11 20:01:25 字数 1385 浏览 21 评论 0

环境

前端使用Axios发送请求配置了axios.defaults.withCredentials = true
后端使用express设置了header和session

// CORS
app.use('*', (req, res, next) => {
    res.header('Access-Control-Allow-Origin', 'url')
    res.header('Access-Control-Allow-Headers', 'Content-Type,Content-Length, Authorization, Accept,X-Requested-With')
    res.header('Access-Control-Allow-Credentials', 'true')
    res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
    if (req.method == 'OPTIONS') return res.status(200).send('OK')
    next()
});

// session
app.use(session({
    secret: 'sec',
    resave: true,
    saveUninitialized: false,
    // store: new SQLiteStore,        // 目前的解决方案是存储到本地数据库中
    cookie: {
        maxAge: 1000 * 60 * 30
    }
}))

使用场景

用于微信访问时验证是否含有code或code是否重复,不含code则请求服务获取code,code重复时则拉取新code,获取code后存储到session

if(!req.query.code || (!!req.session.code && req.session.code == req.query.code)) return res.redirect('url/wx_login?return_uri=' + return_uri + '&AppID=' + AppID + '&scope=' + scope);
req.session.code = req.query.code;

疑问

  1. 存储到req.session的code刷新后丢失,无法于req.query.code做对比判断code是否重复
  2. 发现req.sessionID在页面刷新后变更,是否应该与之前的连接相同
  3. 后端获取req.cookies一直显示undefined,是否cookie有问题

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文