这是我的代码:
var express = require('express')
var sessionCookie = require('cookie-session')
var app = express();
app.use(sessionCookie({ keys: ['abc'], name: 'user' }));
app.get('/', function (req, res, next) {
req.session.views = (req.session.views || 0) + 1;
res.end(JSON.stringify(req.session));
console.log('req.session', req.session);
});
app.get('/logout', (req, res) => {
req.session = {};
// req.session = null;
console.log("req.session(logOut): ", req.session);
res.redirect('/');
});
app.listen(3000);
为什么我使用req.session = {}
时会话没有被删除,但当我使用req.session = null
时会话被删除。
1条答案
按热度按时间disbfnqx1#
查看源代码v2.0.0/index.js#L124
req.session
有一个setter/getter函数,参见:当您将
req.session
设置为null
时,sess
变量将被设置为false
。如果将一个空对象{}
设置为req.session
,如您所见,它将创建一个新会话。最后,
cookie-session
将使用on-headers
包来设置cookie,如果sess
是false
,则cookie将被设置为''
。