2015-04-27 44 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); 
相关问题