【问题标题】:Session Data is not updating会话数据未更新
【发布时间】:2017-09-19 07:14:12
【问题描述】:

我正在使用express-sessionmemcached-connect 包来维护会话。 一切都按预期进行。

这是我的实现:

中间件

app.use(session({
    rolling: true,
    secret: 'iloveexpress',
    proxy: 'true',
    store: new MemcachedStore({
        hosts: ['127.0.0.1:11211']
    }),
    cookie: {
        maxAge: 86400000,
        path: "/",
        domain: 'example.com'
    }, //1 Day
    saveUninitialized: false,
    resave: true
}));

设置会话

req.session.data = {
   id: '123,
   name: 'ABC',
   amount: 1000,
   profilePic: '/images/asd.jpg'
}

更新会话

req.session.data.amount = 500;

但是当我更新会话中的特定数据时,它不会更新。另一次我向 Api 发出请求,它显示旧数据,即amount = 1000;

编辑: req.session 的控制台

Session {
  cookie:
   { path: '/',
     _expires: 2017-09-20T07:11:35.394Z,
     originalMaxAge: 86399951,
     httpOnly: true,
     domain: 'example.com' },
  data:
   { id: '591173362ad30b419e2c4f54',
     name: 'ABC',
     amount: 1000,
     profilePic: '/image/1496663576532Koala.jpg' } }

【问题讨论】:

  • 你能 console.log 你的 req.session 并显示出来吗?只是为了让我们确切地知道所有值的当前会话是什么?
  • 我已经添加了。请看一看。
  • 不确定这是否可行,但请尝试在中间件中将您的 cookie 显式设置为 cookie: { secure: false} 。如果它默认为 true,则基本上意味着 cookie 只会在 https 调用上设置,这可能是你的问题
  • 它没有用。

标签: node.js express memcached express-session


【解决方案1】:

我知道它是旧的,但我遇到了同样的问题并通过设置 cookie 选项解决了它:

安全:真

【讨论】:

    【解决方案2】:

    嘿,我不知道如果这适用于您的情况,但如果您在 post 方法中更新会话变量,请使用:req.session.save() after update the variable

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2016-09-02
      • 2011-02-08
      相关资源
      最近更新 更多