环回从操作挂钩获取IP地址

环回从操作挂钩获取IP地址,ip,hook,operation,loopback,Ip,Hook,Operation,Loopback,那么,XD,我如何从操作钩子中获取查询器的IP地址(如果它甚至是单词XD)?还是远程挂钩?(我可以使用loopback.getCurrentContext()保存它,以便在操作挂钩上使用) 说: 所以我找到了这个:&这个: 这两方面都提供了很大的帮助,我只需要获取地址并将其保存在环回当前上下文中,就像启动脚本中的这样: var loopback = require('loopback'); module.exports = function (app) { app.remot

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

说:

所以我找到了这个:&这个: 这两方面都提供了很大的帮助,我只需要获取地址并将其保存在环回当前上下文中,就像启动脚本中的这样:

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'));
});

环回3的更新:您可以使用以下属性获取IP地址:

ctx.req.connection.remoteAddress

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

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


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

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

获取ip地址。

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

var ipAddress = context.req.connection.remoteAddress

非常感谢。到目前为止,这是我发现的唯一有效的解决方案。
var ipAddress = context.req.connection.remoteAddress