Loopback从操作挂钩获取IP地址

时间:2016-02-26 20:12:22

标签: ip hook operation loopback

那么,那个XD,如何从操作钩子中获取查询器的IP地址(如果那甚至是单词xD)?还是一个远程钩子? (我可以使用res.sendFile(file, {headers: {'Content-Type': 'image/jpeg'}}) 保存它以在操作挂钩上使用。)

说:

loopback.getCurrentContext()

5 个答案:

答案 0 :(得分:6)

所以我发现了这个: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'));
});

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

ctx.req.connection.remoteAddress

答案 3 :(得分:0)

并不是真正的问题,但是当您需要通过远程方法从调用方获取IP地址,并且您的nodejs已经位于Apache代理(或配置良好的Nginx代理)的后面时,您只需

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

获取IP地址。

答案 4 :(得分:0)

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

var ipAddress = context.req.connection.remoteAddress