Разные маршруты Rails, если IP нет в списке? - PullRequest
0 голосов
/ 30 марта 2012

У меня есть приложение Rails 3.2.2, которое представляет собой простую корпоративную интрасеть, однако, хотя там нет никакой частной информации, вероятно, было бы лучше, если бы она была достаточно защищена от внешнего мира.

У нас, тем не менее, есть люди, работающие из дома довольно часто, которые не имеют настройки VPN.

В настоящее время у меня есть правило брандмауэра, которое блокирует всех, кроме списка статических IP-адресов наших команд / филиалов.Проблема в том, что когда член команды посещает сайт из дома, сайт никогда не загружается, потому что брандмауэр отклоняет их.То, что я хотел бы сделать, - это открыть простую страницу в приложении, объясняющую, почему у них нет «полного» доступа.

Брандмауэр обслуживает несколько приложений, поэтому я не могу разместить там страницу с отказом в доступе

Я прочитал несколько вопросов по SO, таких как Получить реальный IP-адрес в локальной сетиСреда разработки Rails , которая показывает, как получить их IP-адрес, но я не уверен, как изменить маршрут по умолчанию на основе этого.

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Дэй поднимает хорошую мысль в комментариях, но только для того, чтобы вы знали:

http://guides.rubyonrails.org/routing.html#advanced-constraints

class BlacklistConstraint
   def initialize
     @ips = Blacklist.retrieve_ips
   end

   def matches?(request)
    @ips.include?(request.remote_ip)
   end
end

YourApp::Application.routes.draw do
  match "*path" => "blacklist#index", :constraints => BlacklistConstraint.new
end
0 голосов
/ 31 октября 2012

Чтобы расширить метод «белого списка» Робина, вот мое решение с использованием нескольких частичных ip в белом списке

class WhitelistConstraint
   def initialize
     @ips =  ["127.0", "10.0.0.0/1"]

   end

   def matches?(request)
    !@ips.select{|req| request.remote_ip.include?(req) }.empty?
   end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...