我有一个Express应用程序:
var site = new express();
然后我将管理部分设为子应用程序:
var admin = new express();
admin.get("/users", function(req, res) {...});
最后,我使用权限检查中间件将管理员app安装到主站点上:
var isAdmin = function(req, res, next) {
if (!req.user.admin) {
return res.send("403");
}
next();
};
site.use("/admin", isAdmin, admin);
问题是:当我打开/admin/users
页面时,权限检查中的next()
调用最终导致404。我觉得它在 site 中调用了下一个回调函数,而不是进入 admin 。
如果我删除权限检查中间件,请按以下方式编写:
site.use("/admin", admin);
然后可以正确访问/admin/users
。当然没有任何ACL ......
问题是如何让代码进入中间件链中的 admin 子应用程序?
答案 0 :(得分: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
现在应用于子应用。这很有效。