2014-02-23 59 views
0

我正在使用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. 
}); 

這是在那裏感覺的事情之一像必須是一個更好的方式,但我不知道它是什麼。

任何人有任何想法?

回答

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的。

相關問題