【问题标题】:Loopback get IP address from operation hookLoopback 从操作钩子中获取 IP 地址
【发布时间】:2016-06-10 04:59:39
【问题描述】:

好吧,那个 XD,我如何从操作挂钩中获取查询器的 IP 地址(如果这甚至是单词 xD)?还是远程挂钩? (我可以用loopback.getCurrentContext() 保存,在操作钩子上使用)。

说:

Model.observe('loaded', function(ctx,next) {
   ctx.ip ??
});

【问题讨论】:

    标签: ip hook operation loopback


    【解决方案1】:

    所以我发现了这个:https://github.com/strongloop/loopback/issues/1495 和这个:How to determine a user's IP address in node 两者都提供了很大的帮助,我只需要获取地址并将其保存在环回当前上下文中,就像在启动脚本中这样:

    var loopback = require('loopback'); 
    
    module.exports = function (app) {     
    
      app.remotes().before('*.*', function(ctx,next) {
        loopback.getCurrentContext().set('remoteAddress',ctx.req.connection.remoteAddress);
        next();
      });
    
      app.remotes().before('*.prototype.*', function(ctx,instance,next) {
        loopback.getCurrentContext().set('remoteAddress',ctx.req.connection.remoteAddress);
        next();
      });
    };
    

    然后我只是把它放在这样的操作钩子上:

    Model.observe('loaded', function(ctx,next) {
       console.log("Remote Address: ", loopback.getCurrentContext().get('remoteAddress'));
    });
    

    【讨论】:

    • 谢谢!到目前为止,这是我发现的唯一可行的解​​决方案。
    【解决方案2】:

    Loopback 3 更新:您可以使用此属性获取 IP 地址:

    ctx.req.connection.remoteAddress
    

    【讨论】:

      【解决方案3】:

      您还应该在 server.js 中添加此代码以授予真实 IP,否则您将获得负载均衡器 IP:

      app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal']);

      https://expressjs.com/en/guide/behind-proxies.html

      【讨论】:

        【解决方案4】:

        不是真正问的问题,但是当您需要远程方法中调用者的 ip 地址,并且您的 nodejs 已经在 Apache 代理(或配置良好的 nginx 代理)之后,您可以简单地

            const ip = req.header('X-Forwarded-For')
        

        获取IP地址。

        【讨论】:

          【解决方案5】:

          您可以使用以下命令获取请求用户的 IP 地址。

          var ipAddress = context.req.connection.remoteAddress
          

          【讨论】:

            猜你喜欢
            • 2018-11-24
            • 1970-01-01
            • 2019-12-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-12-31
            • 2014-07-31
            相关资源
            最近更新 更多