Node.js 如何使用express session强制删除会话ID cookie?
我正在使用express会话模块设置一个具有过期期限的会话。在此期限之后,刷新页面时将删除cookie。但是,例如当用户注销时,我希望强制删除cookie。我已经使用Node.js 如何使用express session强制删除会话ID cookie?,node.js,session,express,cookies,express-session,Node.js,Session,Express,Cookies,Express Session,我正在使用express会话模块设置一个具有过期期限的会话。在此期限之后,刷新页面时将删除cookie。但是,例如当用户注销时,我希望强制删除cookie。我已经使用req.session.destroy成功销毁了会话。 我尝试使用: res.clearCookie('SID').status(200).send('Page'); 在req.session.destroy内部,尽管,如果我在浏览器中查看cookie详细信息,我会看到内容被设置为nothing,过期日期被设置为1970年1月1日
req.session.destroy成功销毁了会话。
我尝试使用:
res.clearCookie('SID').status(200).send('Page');
在req.session.destroy内部,
尽管,如果我在浏览器中查看cookie详细信息,我会看到内容被设置为nothing,过期日期被设置为1970年1月1日星期四01:00:00,
尽管cookie不会自行删除。我还在会话存储配置中设置了unset:'destroy'
,但这并没有解决我的问题
中间件:
app.use(session({
store: new MemoryStore({
checkPeriod: 86400000
}),
cookie: {
secure: true,
maxAge: 10000
},
secret: secret,
resave: false,
saveUninitialized: false,
name: 'SID',
unset: 'destroy'
}));
提前感谢。您需要强制设置
req.session.cookie.expires
或req.session.cookie.maxAge
的值
以这段代码为例
var timeInMillseconds = 3600000;
req.session.cookie.expires = new Date(Date.now() + timeInMillseconds);
req.session.cookie.maxAge = timeInMillseconds;
现在就使用这个中间件
app.use(session({
secret: 'mySecre',
saveUninitialized: true
}))
app.get('/', function(req, res){
req.session.myUser = "myUser";
req.session.cookie.expires = new Date(Date.now() + 36000000);
req.session.cookie.myDog = "myDog";
res.status(201).send(req.session); //you can also use 200
console.log(req.session);
})
您需要强制设置
req.session.cookie.expires
或req.session.cookie.maxAge
的值
以这段代码为例
var timeInMillseconds = 3600000;
req.session.cookie.expires = new Date(Date.now() + timeInMillseconds);
req.session.cookie.maxAge = timeInMillseconds;
现在就使用这个中间件
app.use(session({
secret: 'mySecre',
saveUninitialized: true
}))
app.get('/', function(req, res){
req.session.myUser = "myUser";
req.session.cookie.expires = new Date(Date.now() + 36000000);
req.session.cookie.myDog = "myDog";
res.status(201).send(req.session); //you can also use 200
console.log(req.session);
})
嗨,谢谢你的帮助。I did req.session.cookie.expires=新日期(0);但这似乎并没有在cookie上设置过期日期,它只是保持在配置中的默认设置。使用
newdate(date.now()+hour)
尝试上面的确切代码,客户机是否使用req.session.save(function(err){})
来保存它@马修斯没有定义。我也不是这样设置会话,在express会话中,我是这样设置的:req.session.user=value;抱歉,这仍然不起作用。我正在使用req.session.cookie.expires=新日期(Date.now()+3600000);它不是req.session.user.cookie.expires,是吗?另外,当我查看cookie信息时,不能正确设置过期时间。过期时间是我在express session配置中设置的,而不是提前一小时。您好,谢谢您的帮助。I did req.session.cookie.expires=新日期(0);但这似乎并没有在cookie上设置过期日期,它只是保持在配置中的默认设置。使用newdate(date.now()+hour)
尝试上面的确切代码,客户机是否使用req.session.save(function(err){})
来保存它@马修斯没有定义。我也不是这样设置会话,在express会话中,我是这样设置的:req.session.user=value;抱歉,这仍然不起作用。我正在使用req.session.cookie.expires=新日期(Date.now()+3600000);它不是req.session.user.cookie.expires,是吗?另外,当我查看cookie信息时,不能正确设置过期时间。过期时间是我在express session配置中设置的,而不是提前一小时。