Loopback получить IP-адрес из хука операции

Ну, это XD, как мне получить IP-адрес запрашивающего (если это даже слово xD) из хука операции? или удаленный крючок? (Я могу сохранить его с помощью loopback.getCurrentContext() для использования в хуке операции).

Сказать:

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

person Alons Oh    schedule 26.02.2016    source источник


Ответы (5)


Итак, я нашел это: https://github.com/strongloop/loopback/issues/1495 и это: Как определить IP-адрес пользователя в 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'));
});
person Alons Oh    schedule 29.02.2016
comment
Спасибо! Пока это единственное решение, которое я нашел, которое работает. - person Alec Thilenius; 17.07.2016

Обновление для Loopback 3: вы можете получить IP-адрес, используя это свойство:

ctx.req.connection.remoteAddress
person Irvin Sandoval    schedule 27.01.2018

Вы также должны добавить этот код в server.js, чтобы предоставить реальный IP-адрес, иначе вы получите IP-адрес балансировщика нагрузки:

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

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

person Gustavo Lopes Mourad    schedule 13.09.2018

На самом деле вопрос не задан, но когда вам нужен IP-адрес от вызывающего абонента в удаленном методе, а ваш nodejs уже находится за прокси-сервером Apache (или хорошо настроенным nginx), вы можете просто

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

чтобы получить IP-адрес.

person boukae    schedule 26.06.2019

Вы можете получить IP-адрес запрошенного пользователя с помощью приведенной ниже команды.

var ipAddress = context.req.connection.remoteAddress
person Praveen Yen    schedule 29.06.2019