如何分离会话控制而不是在每个路由中写入它

时间:2013-12-27 12:37:16

标签: javascript node.js session express

我正在使用express开发Node.js应用程序。我正在检查每条路线的会话。但是我想把这个检查与我的路线分开。需要点子。

这是我的路线:

app.get('/Management', function(req, res) {
    if (!req.session.email) {
        return res.render(__dirname + "../../../views/management/accessdenied.jade", {
            title: 'dont have access',
            stylesheet: 'accessdenied',
            error: 'forbidden'
        });
    }
    return res.render(__dirname + "/views/index", {
        title: 'Management',
        stylesheet: 'managementindex'
    });
});

这是我的会话检查:

if (!req.session.email) {
    return res.render(__dirname + "../../../views/management/accessdenied.jade", {
        title: 'dont have access',
        stylesheet: 'accessdenied',
        error: 'forbidden'
    });
}

1 个答案:

答案 0 :(得分:2)

制作自己的中间件。这将响应所有获得&发布请求。您将需要它在所有其他'app.use()'调用(bodyParse,cookieParser等)的底部

app.use(function(req, res, next) {
    if (!req.session.email) {
        res.render(__dirname + "../../../views/management/accessdenied.jade", {
            title: 'dont have access',
            stylesheet: 'accessdenied',
            error: 'forbidden'
        });
    } else {
        next();
    }
});