Подтвердить что ты не робот

Есть ли способ настроить простую HTTP-аутентификацию для приложения на heroku?

Я хочу настроить собственный сервер промежуточного уровня на heroku, используя простую HTTP-аутентификацию. Возможно ли это?

4b9b3361

Ответ 1

Совершенно верно. Самое простое решение - просто добавить что-то в свой контроллер приложений, который использует Rails, встроенный в базовую поддержку auth (см. Здесь http://railscasts.com/episodes/82-http-basic-authentication) и просто оберните он в условном для вашего Rails.env. Обратите внимание, что на Heroku по умолчанию RAILS_ENV настроен на производство, но вы можете изменить его для своих непродуктивных приложений, используя heroku config (http://docs.heroku.com/config-vars).

Вы также можете рассмотреть возможность установки промежуточного программного обеспечения Rack-style в стиле стойки, но я бы просто пошел с указанным выше.

Ответ 2

Более простой способ - просто вставить пару строк промежуточного ПО Rack в конфигурацию промежуточной среды, оставив только логику контроллера:

# config/environments/staging.rb
MyApp::Application.configure do
  config.middleware.insert_after(::Rack::Lock, "::Rack::Auth::Basic", "Staging") do |u, p|
    [u, p] == ['username', 'password']
  end

  #... other config
end

Этот отзыв любезно предоставлен Оле Мортен Амундсен. Дополнительная информация плюс спецификация пароля Heroku:

http://olemortenamundsen.wordpress.com/2011/04/05/ruby-secure-staging-environment-of-your-public-app-from-users-and-bots/

Ответ 3

В Rails4 я получил "Нет такого промежуточного ПО для вставки после: Rack:: Lock". Замените код Адама на нижеследующее:

# config/environments/staging.rb
MyApp::Application.configure do
  config.middleware.use '::Rack::Auth::Basic' do |u, p|
    [u, p] == ['username', 'password']
  end
  # ...
end

Смотрите: http://www.intridea.com/blog/2013/6/4/tips-and-tricks-for-deploying-rails-4-apps-on-heroku

Ответ 4

Существует приятная надстройка heroku, использующая Mozilla Persona для аутентификации. Он бесплатный для сайтов с небольшим объемом (менее 10 000 аутентификаций в месяц):

https://addons.heroku.com/wwwhisper

Очень простая установка и настройка.

Ответ 5

Другой способ сделать это с помощью application_controller.rb:

  # app/controllers/application_controller.rb
  before_filter :http_basic_auth

  def http_basic_auth
    if ENV['HTTP_AUTH'] =~ %r{(.+)\:(.+)}
      unless authenticate_with_http_basic { |user, password|  user == $1 && password == $2 }
        request_http_basic_authentication
      end
    end
  end

а затем вам нужно экспортировать свои значения: для разработки:

 export HTTP_AUTH=test:test

Для герою:

 heroku config:set HTTP_AUTH=test:test

Теперь, когда в окне приглашения вы должны ввести для пользователя/пароль = > тест/тест.

Надеюсь, вы сочтете это полезным.