连接会话保存冗余?

时间:2013-12-29 03:47:33

标签: node.js express connect

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

1 个答案:

答案 0 :(得分:1)

Connect的会话处理是自动的。查看the codesave会自动调用res.end(当您的回复发送时),因此无需单独调用它。

将其视为向您展示的实施细节。我想不出你使用它的原因很多。也许如果您要保存到Redis或数据库,并且您希望在调用end之前由于某种原因提前提交会话?