如何使用bazinga地理编码器获得安全的IP

时间:2017-06-27 12:20:17

标签: php symfony controller geocoding symfony-3.2

我在Symfony的一个项目中使用bazinga地理编码器。我们在应用程序中使用了几个地理定位部分,因此我们无法使用本地IP(127.0.0.1或我们的docker IP)。我们需要一个fakeIp来处理那些地理位置。此外,我们在本地使用代理来获得https连接。

问题在于,当我们使用我们的假名重新编写ip时,symfony认为她不能信任,所以我们得到一个错误,因为重写不是来自可信代理。然后当我们将它添加到trustedProxies来告诉symfony它是一个很好的ip你可以信任她,fakeIp不再被认为是我们的IP。

symfony开始使用我的docker IP。我在互联网上做了很少的研究我认为这可能是一个解决方案,但它只能部分工作(https://symfony.com/blog/fixing-the-trusted-proxies-configuration-for-symfony-3-3

抱歉我的英文。我希望你能理解我的prb

这是我的fakeRequest监听器的代码,没有其他修改

 /**
 * @var string
 */
protected $fakeIp = null;

public function __construct($fakeIp)
{
    $this->fakeIp = $fakeIp;
}

public function onKernelRequest(GetResponseEvent $event)
{
    if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
        return;
    }

    if (null !== $this->fakeIp && !empty($this->fakeIp)) {
        $event->getRequest()->setTrustedProxies(array($this->fakeIp));
        $event->getRequest()->server->set('REMOTE_ADDR', $this->fakeIp);
    }
}

public function getFakeIp()
{
    return $this->fakeIp;
}

0 个答案:

没有答案