6

我正在用 Node 中的 Express 实现一个 RESTful API,而且我对这两者都是新手。我想使用基本身份验证来控制访问。

我想使用像白名单这样的东西来应用它,但我不知道该怎么做。

黑名单很容易,我可以在我的#VERB电话中加入第二个参数:

app.get('/', asyncAuth, requestHandler);

我可以更进一步,将所有内容列入黑名单:

app.all('*', asyncAuth, requestHandler);

但我想将我的 basicAuth 应用于每条路线,除了. POST /users有没有一种优雅的方式来做到这一点?我可以使用“黑名单”方法,然后有选择地将其从我想要的路线中删除吗?我不知道怎么做。

4

2 回答 2

8

POST /users在列入黑名单的路线之前 定义您的路线:

app.post('/users', function(req, res) {
  ...
});

app.all('*', asyncAuth, requestHandler);
于 2013-03-15T08:24:15.503 回答
2

您可以维护列入白名单的正则表达式列表,并将 url 与列表中的每个 url 进行匹配,如果匹配则继续,否则需要 auth

app.all('*', asyncAuth);

function asyncAuth(req, res, next) {
    var done = false;
    whitelist.forEach(function(regexp) {
        if (req.url.match(regexp)) {
            done = true;
            next();
        }
    });
    if (!done) requireAuth(next);
}

类似的东西

于 2013-03-15T04:39:46.627 回答