Node.js 如何添加新的ACL中间件?
我正在通过IP ACL处理客户端访问Node.js 如何添加新的ACL中间件?,node.js,express,Node.js,Express,我正在通过IP ACL处理客户端访问 function localAcl (options) { let {allowedMethods} = options if (!Array.isArray(allowedMethods)) { allowedMethods = [] } return function(req, res, next) { if (allowedMethods.includes(req.method)) {
function localAcl (options) {
let {allowedMethods} = options
if (!Array.isArray(allowedMethods)) {
allowedMethods = []
}
return function(req, res, next) {
if (allowedMethods.includes(req.method)) {
next()
} else {
(ipAccessControl(options))(req, res, next)
}
}
}
app.use('/api/v1', localAcl(options), apiV1Router)
上面的代码读取一个配置文件并决定是否接受
现在,我想添加一个新的中间件,它从web文件读取另一个配置文件并决定权限
function newAcl () {
...
switch(result) {
case SUCCESS:
next();
break;
case FAIL:
next(new Error('Access Denied'));
break;
}
}
//something like this..
我想先用localAcl检查权限
如果localAcl接受,我不希望检查newAcl,请求将得到处理
如果localAcl拒绝,我希望newAcl再次检查,如果newAcl接受,则应该处理请求
如何连接这两者?我看到两个选项
next('route')
跳过中间件的其余功能这意味着您可能应该在
ipAccessControl
函数中调用next('route')
。在lcoalac
中间件中设置req
对象的一些标志属性,例如req.localAcl.isAllowed=true
。然后,您可以从newAcl
中间件获取isAllowed
属性值。