4

我尝试将我的 Compound.js 应用程序用作(透明)代理服务器。当用户尝试请求外部网站时,应用程序将检查具有该 IP 地址的用户之前是否经过身份验证。

如果是这样,将显示外部站点,如果不是,将鼓励用户登录。问题是,当访问数据库对象“用户”时,没有处理响应。当我注释掉数据库部分并只使用匿名函数中的代码时,程序按预期工作。

action('exturl', function () {
    User.all({ where: { ipaddress: req.ip }}, function(err, users) {
      if (users.length > 0) {                                                                                              
          this.user = user[0];                                                                                            

          var proxy = http.createClient(80, req.headers['host'])
          var proxy_request = proxy.request(req.method, req.url, req.headers);
          proxy_request.addListener('response', function (proxy_response) {
              proxy_response.addListener('data', function(chunk) {
                  res.write(chunk, 'binary');
              });
              proxy_response.addListener('end', function() {
                  res.end();
              });
              res.writeHead(proxy_response.statusCode, proxy_response.headers);
          });
          req.addListener('data', function(chunk) {
              proxy_request.write(chunk, 'binary');
          });
          req.addListener('end', function() {
              proxy_request.end();
          });
      } else {                                                                                                            
          redirect(path_to.login);                                                                                        
      }                                                                                                                   
    });
});

我的代码中是否有故障?我不知道我做错了什么。

4

0 回答 0