2017-09-08 34 views
1

我正在使用express-session模块来设置具有到期年龄的会话。在这个年龄之后,当页面刷新时,Cookie将被删除。但是,如用户注销时,我想强制删除该Cookie。我已经成功地摧毁了使用req.session.destroy.如何强制使用快速会话删除会话ID cookie?

我试图使用会话:

res.clearCookie('SID').status(200).send('Page'); 

req.session.destroy,虽然,如果我查看我看到的内容设置为无浏览器cookie的详细信息,尽管cookie不会自行删除,但过期日期设置为Thursday, 1 January 1970 at 01:00:00,。我还在会话存储配置中设置了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' 
})); 

在此先感谢。

回答

0

您需要强制设置值req.session.cookie.expiresreq.session.cookie.maxAge

见这个代码peiece为例,

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); 
}) 
+0

您好,感谢试图帮助。我做了req.session.cookie.expires = new Date(0);但这似乎甚至没有设置cookie上的截止日期,它只是保持在配置中的默认设置。 –

+0

尝试使用'new Date(Date.now()+ hour)'的确切代码'也使用'req.session.save(function(err){})'为客户端保存它吗? @MatthewChristopher – turmuka

+0

小时未定义。我也没有像快速会议那样设置会话,我将它设置为这样:req.session.user = value; –