我正在使用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.
});
这是其中一种感觉必须是更好的方法,但我不知道它是什么。
有人有任何想法吗?
答案 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
,然后再运行该路由的代码。