在中间件中使用特定名称空间的中间件

时间:2014-12-16 20:26:52

标签: node.js namespaces restify

我想使用中间件来检查某些路由(那些以/user/开头的路由)的用户凭据,但令我惊讶的是server.use不会将路由作为第一个参数而是{ {1}} restify-namespace效果仍然是全球性的。

还有其他方法比将我的身份验证中间件传递给控制器​​旁边的所有路径更好吗?

2 个答案:

答案 0 :(得分:0)

我想我只是使用server.use并在中间件中进行以下路由检查:

if (req.url.indexOf('/user/') !== 0) {
    return next();
}

答案 1 :(得分:0)

不幸的是,restify似乎不像Express,它支持*运算符。因此,我建议将你想要的路线分组并在它们之前应用.use

那是:

server.get('/test', function(req, res, next) {
  // no magic here. server.use hasn't been called yet.
});

server.use(function(req, res, next) {
  // do your magic here
  if(some condition) {
    // magic worked!
    next(); // call to move on to the next middleware.
  } else {
    // crap magic failed return error perhaps?
    next(new Error('some error')); // to let the error handler handle it. 
  } 
});

server.get('/admin/', function(req, res, next) {
  // magic has to be performed prior to getting here!
});

server.get('/admin/users', function(req, res, next) {
  // magic has to be performed prior to getting here!
});

但是,我个人主张使用express,但选择适合您需要的任何内容。