Mimic .htaccess или какой-либо другой тип защиты паролем с помощью Webrick - PullRequest
6 голосов
/ 16 ноября 2011

У меня есть приложение rails, которое мне нравится разрабатывать на более чем локальном, медленном компьютере, проблема в том, что на сервере отличная среда разработки, мне нужен способ просмотра страниц, над которыми я работаю вживую ,

Это довольно легко, если я не заботился о том, чтобы приложение было видимым для публики, но оно не может быть видно нигде, кроме как на рабочем сервере.

Итак, у меня была идея просто установить базовый httpauth, и тогда только я смогу увидеть приложение rails, но оно все еще размещено на сервере.

Если бы я делал это с помощью apache / php, я бы просто использовал файл .htaccess для защиты каталога, но я понятия не имею, как защитить приложение от общественности с помощью WEBrick.

Если у кого-то есть идеи, мне бы очень хотелось, чтобы в коде не было изменений кода или только изменений кода в файлах. Я могу использовать .gitignore, поэтому развертывание по-прежнему простое.

Ответы [ 4 ]

3 голосов
/ 21 ноября 2011

Вы можете ограничить доступ с помощью Rack на основе basic auth или IP white listing

Basic Auth

Добавьте следующее к своему config/environments/development.rb

config.middleware.use Rack::Auth::Basic, "Beta Access" do |username, password|
  'secret' == password
end

Белый список IP

Для этого я нашел два драгоценных камня:

rack-auth-ip

rack-ip-whitelist

Я бы использовал rack-auth-ip, как это было там в течение некоторого времени.Добавьте следующее к своему config/environments/development.rb

config.middleware.use Rack::Auth::IP, %w( YourIPAddress )

Теперь экземпляр доступен только в том случае, если исходный IP-адрес находится в белом списке.

2 голосов
/ 24 ноября 2011

Извините, если я что-то здесь упускаю, но почему бы вам не сработала встроенная в Rails базовая аутентификация http?

class ApplicationController < ActionController::Base
  protect_from_forgery

  http_basic_authenticate_with :name => "dhh", :password => "hatezgroupon", :if => lambda { Rails.env.development? }
end
2 голосов
/ 18 ноября 2011

Этот вопрос HTTP-аутентификация Ruby Webrick , кажется, дает ответ

Вот ссылка на некоторые документы Webrick . Похоже, что вам нужно что-то вроде этого, из приведенной выше ссылки:

realm = "Gnome's realm"
start_webrick {|server|
  server.mount_proc('/convenient_basic_auth') {|req, resp| 
    HTTPAuth.basic_auth(req, resp, realm) {|user, pass|
      # this block returns true if
      # authentication token is valid
      user == 'gnome' && pass == 'supersecretpassword'
    }
    resp.body = 
      "You are authenticated to see the super secret data\n"
  }
}

и ссылка на rdocon WEBrick / HTTPAuth

config = { :Realm => 'DigestAuth example realm' }

htpasswd = WEBrick::HTTPAuth::Htpasswd.new    'my_password_file'
htpasswd.auth_type = WEBrick::HTTPAuth::DigestAuth
htpasswd.set_passwd config[:Realm], 'username', 'password'
htpasswd.flush
1 голос
/ 21 ноября 2011

Если вы не застряли с помощью WEBrick, лучшим решением было бы использовать nginx, который прокси для единорога.Вот хороший учебник: здесь

...