connect的会话如何工作?我正在关注this tutorial。我注意到即使我已经注释掉session.save()
调用一切仍然有效,该属性仍然会持久保存到会话中。每次提交回复时,Express会自动拨打session.save()
吗?如果是这种情况,保存方法的目的是什么?
var BaseController = require('./Base'),
View = require('../views/Base');
module.exports = BaseController.extend({
name: 'Admin',
username: 'dadams',
password: 'dadams',
run: function(req, res, next) {
if(this.authorize(req)) {
req.session.fastdelivery = true;
// req.session.save(function(err) {
var v = new View(res, 'admin');
v.render({
title: 'Administration',
content: 'Welcome to the control panel'
});
// });
} else {
var v = new View(res, 'admin-login');
v.render({
title: 'Please login'
});
}
},
authorize: function(req) {
return (
req.session &&
req.session.fastdelivery &&
req.session.fastdelivery === true
) || (
req.body &&
req.body.username === this.username &&
req.body.password === this.password
);
}
});
答案 0 :(得分:1)
Connect的会话处理是自动的。查看the code,save
会自动调用res.end
(当您的回复发送时),因此无需单独调用它。
将其视为向您展示的实施细节。我想不出你使用它的原因很多。也许如果您要保存到Redis或数据库,并且您希望在调用end之前由于某种原因提前提交会话?