0

我有一个 Express 应用程序:

var site = new express();

然后我将管理部分设为子应用程序:

var admin = new express();
admin.get("/users", function(req, res) {...});

最后,我使用权限检查中间件将管理应用程序安装到主站点:

var isAdmin = function(req, res, next) {
    if (!req.user.admin) {
        return res.send("403");
    }
    next();
};

site.use("/admin", isAdmin, admin);

问题是:当我打开/admin/users页面时,next()权限检查中的调用最终导致 404。我觉得它调用了站点中的下一个回调函数,而不是进入admin

如果我删除权限检查中间件,就这样写:

site.use("/admin", admin);

然后/admin/users就可以正常访问了。当然没有任何ACL...

问题是如何使代码进入中间件链中的管理子应用程序?

4

1 回答 1

0

好吧......在我发布这个问题之后,我意识到我的代码应该是这样的:

var site = new express();

var admin = new express();

var isAdmin = function(req, res, next) {
    if (!req.user.admin) {
        return res.send("403");
    }
    next();
};

admin.use(isAdmin);
admin.get("/users", function(req, res) {...});

site.use("/admin", isAdmin, admin);

差异现在isAdmin应用于子应用程序。这很好用。

于 2013-05-23T12:23:55.447 回答