Вопрос относительно значения, возвращаемого из WebAuthenticationDetails.getRemoteAddress () - PullRequest
1 голос
/ 16 ноября 2010

Я пишу пользовательский AccessDecisionVoter, который разрешит доступ к определенным ресурсам, только если удаленный адрес запроса найден в списке разрешенных IP-адресов.Однако значение удаленного адреса, возвращаемого функцией WebAuthenticationDetails.getRemoteAddress (), имеет формат, который выглядит как Ipv6.При локальном запуске моего приложения это то, что возвращается вышеуказанным методом:

0:0:0:0:0:0:0:1%0

Я сохраняю разрешенный адрес в списке через запятую в файле свойств.Список анализируется, и каждый разрешенный адрес сравнивается с удаленным адресом, но, поскольку я понятия не имею, как преобразовать адрес Ipv4 в адрес Ipv6, это сравнение всегда будет неудачным.

Так же как и значениевозвращается WebAuthenticationDetails.getRemoteAddress () или я вижу это только потому, что я запускаю это локально?

Есть ли какой-нибудь способ преобразовать эту строку в строку Ipv4?

Есть ли способ заставить рассматриваемый метод возвращать строку Ipv4?

Спасибо!

1 Ответ

3 голосов
/ 16 ноября 2010

Нельзя преобразовать адрес IPv6 в адрес IPv4.Представляют два разных протокола.Адрес getRemoteAddress() будет в формате, в зависимости от протокола, используемого для создания запроса к веб-приложению.Я думаю, что вы видите IPv6-адрес только при локальном использовании приложения.0:0:0:0:0:0:0:1 - это адрес localhost, который совпадает с 127.0.0.1 в IPv4.Я думаю, вам следует просто добавить этот IPv6-адрес в список разрешенных IP-адресов.

...