从回调范围访问变量

时间:2018-08-11 14:58:21

标签: javascript node.js security

我正在节点js中进行Web服务器开发,其中请求处理程序将如下;

function handler(request, response, give){
 var dbInstance = give("db instance");
 //..
}

这就是调用处理程序的方式;

routesManager.prototype.register = function( httpMethod, url, handler ){

    this.router.on( httpMethod, url, async ( request, response, params ) => {
        var store  = this.store;            
        handler(request, response, function (str) {
            return store.get(str);
        });
    });
}    

因此可以从回调访问商店。是否可以从处理程序中访问它?我想保护它免受任何直接使用。

1 个答案:

答案 0 :(得分:2)

商店可通过闭包访问处理程序回调。如果尚未在与商店相同的范围内定义处理程序,则处理程序本身将无法访问。所以,放松:)

将存储传递给处理程序的唯一方法是在当前在代码中被调用的上下文中将处理程序绑定到,然后调用处理程序。