传递到后续路由脚本的Express-enrouten路由中间件

时间:2019-05-07 17:51:43

标签: node.js express node-modules

我具有以下目录结构

  routes
      - v1
           - me
                - index.js
           - groups
                - index.js
                - payments.js

我所做的是,除非用户已登录(本地密码),否则无法访问routes/v1/groups/index.js

 const controller = require(global.settings.paths.controllers +
      '/v1/groups/index.js');

 module.exports = function(router) {
      //Must be logged on
      router.use(

           function(req, res, next) {
           if (req.isAuthenticated()) {
                return next();
           } else {
                return error('errors.logged_in.name', 'errors.logged_in.desc', res);
         }
        }
      );

      //Base
      router.get('/', controller.profile);
 };

我注意到的是,index.js脚本中传递到router.use()的中间件正在传递到routes/v1/groups/payments.js

这是目前的基本虚拟路由。

1)是否将所有router.use()中间件都传递到后续路由? 2)如果是这样,我如何避免这种情况(例如,我是否需要在单个路由中包括中间件?)。 3)是否可以消除这种行为?

理想情况下,在注册中间件时,如果您允许它在中间件基础上坚持到中间件的不同路由,那将是惊人的。我预见的另一个问题是示例中的Payments.js在index.js之前加载。如果我不将中间件添加到此脚本中,将可以访问。因此,应该对路由的连接方式进行一些控制。

任何建议和评论都将不胜感激!

谢谢

0 个答案:

没有答案