快递路线和中间件

时间:2018-02-05 21:33:17

标签: javascript express mongoose routes authorization

我正在使用角色授权(connect-roles),并尝试为每个路由添加多个角色。这是使用快递和monogoose。这是我目前的代码:

 router.get('/admin/:slug', function (req, res) {

   if (user.can('vip')) {

     adminController.showVipView // <-- this is what I need to work

   } else {

     // call a different view

   }

});

没有if语句,这就是它通常的工作方式。这似乎是超级基本的表达,但我无法让它发挥作用。

router.get('/admin/:slug', user.can('vip'), adminController.showVipView);

1 个答案:

答案 0 :(得分:1)

只需将requestresponse传递给它:

adminController.showVipView(req, res);

它可能还需要next回调,那么你也应该将其传递给它......

顺便说一句,你的if语句不能正常工作,因为它返回一个中间件。可能会这样做:

user.can('vip')(req, res, function(){
  adminController.showVipView(req, res);
});