Node.js:如何更好地管理路由器和身份验证?

时间:2013-01-09 07:24:43

标签: node.js authentication router

在我的node.js代码中,我需要管理很多路由器和身份验证,例如:

app.get('/', fn);
app.get('/admin', checkAccess, fn);
app.get('/blog', checkAccess, fn);

可能是路由器编号为十几个或更多,

如何更好地管理它们?

是否有管理模块?或类似的东西?

1 个答案:

答案 0 :(得分:1)

根据您的示例,您可以使用多个回调,或者使用简单的装饰器模式。

多次回调

function checkAccess(req, res) {
    // check for access
    if (!access) {
        res.send(403);
    }
}

app.get('/', fn);
app.get('/admin', checkAccess, fn);
app.get('/blog', checkAccess, fn);

简单的装饰图案

function requiresAccess(fn) {
    return function (req, res) {
        // check for access
        if (access) {
          fn(req, res);
        } else {
          res.send(403);
        }
    }
}

app.get('/', fn);
app.get('/admin', requiresAccess(fn));
app.get('/blog', requiresAccess(fn));