在呼叫路由控制器之前进行认证

时间:2014-02-23 03:24:11

标签: node.js restify

我正在使用restify处理API。将有十几个或更多端点,每个端点都需要身份验证。 API将是无状态的,因此无论端点如何,每个API请求都将传递凭据。

如果可能,我想做的是在协商路线之前进行身份验证。否则,如果我有路线:

server.get('/activities', activities.index);

然后,在activities.index(和其他所有路由方法)中,我必须复制以下内容:

var user = require('../models/user')(server);
user.authenticate(req.authorization, function(err, user) {
  ...

  // Do the real activities-related stuff.
});

这是其中一种感觉必须是更好的方法,但我不知道它是什么。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:2)

因此,您可以在每个路由运行之前注册要运行的处理程序。

http://mcavage.me/node-restify/#Common-handlers:-server.use()

server.use(function(req, res, next){
    //do authentication here
    if(authenticated){
        return next();
    }
    else{
        res.send({auth:false});
})

因此,当用户请求server.use时使用/activites时,它将按照您创建的顺序运行您创建的所有server.use,然后再运行该路由的代码。