【发布时间】:2017-09-19 07:14:12
【问题描述】:
我正在使用express-session 和memcached-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