我在我的应用程序中使用了名为Grant的库。以前我按照上面链接的自述文件中的示例包含它,但是我现在需要有条件地包含它,而我似乎无法使其工作。
之前的工作方式
const grant = new Grant(grantConfig);
app.use(grant);
之前我已经在Express中完成了条件中间件,所以我认为包括格兰特不会有问题。
我是如何尝试的(没有工作)
const grant = new Grant(grantConfig);
app.use((req, res, next) => {
if (someBooleanVariable) {
next();
} else {
grant(req, res, next);
}
});
所以这不起作用。我认为这可能与Grant是Express的一个实例而不仅仅是一个常规的中间件功能有关,但我不确定。您可以看到Grant的实施方式here。 Express文档说它应该被视为相同,但我也可能误解它们。
注意:我需要根据每个请求进行操作,因此采用中间件方式。
答案 0 :(得分:1)
如果您只想在一部分路线上使用特定的中间件:
// On a single route:
app.get('/some/route', grant, function(req, res) {
...
});
// On a set of routes with a particular prefix:
app.use('/api', grant, apiRouter);
// On a specific router:
let apiRouter = express.Router();
apiRouter.use(grant);
apiRouter.get(...);