Я хочу настроить собственный сервер промежуточного уровня на heroku, используя простую HTTP-аутентификацию. Возможно ли это?
Есть ли способ настроить простую HTTP-аутентификацию для приложения на heroku?
Ответ 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:
Ответ 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
Теперь, когда в окне приглашения вы должны ввести для пользователя/пароль = > тест/тест.
Надеюсь, вы сочтете это полезным.