2015-04-27 45 views
0

everyone!我在我的app.js中有這句話:node.js - 在調用映射方法之前執行全局過程

app.get('/aux/:subject/:data', aux.query); 
app.post('/register/:Id', register.create); 
app.post('/register/:Id/smsConfirm', register.confirmSms); 
app.post('/register/:Id/login', register.login); 
app.post('/register/:Id/resetPassword', register.resetPassword); 
app.get('/register/:Id/getSms', register.getSms); 

而且我會有更多,因爲這是開始。我想實現一個全局函數,在像aux.query,register.create等任何類被調用之前執行。

基本上我想檢查IP是否在我的黑名單上。如果爲true:不執行任何操作 - 拋出403。實際上,我知道實現這一點的唯一方法是在任何方法中使用承諾進行驗證,並在檢查後允許執行,但我相信有一種更好的方式以全局方式執行這些事情(也許不是? ) 有人可以給我一個很好的提示嗎? ty!

回答

0

如果它是對每個端點的有效測試,您應該將您的黑名單檢查處理爲中間件。

function blacklist(req, res, next) { 
    // check blacklist 
    // call next() if passed 
    next(); 
} 

app.use(blacklist); 

app.get('/aux/:subject/:data', aux.query); 
app.post('/register/:Id', register.create); 
app.post('/register/:Id/smsConfirm', register.confirmSms); 
app.post('/register/:Id/login', register.login); 
app.post('/register/:Id/resetPassword', register.resetPassword); 
app.get('/register/:Id/getSms', register.getSms); 
相關問題