単純なhttp認証を使用してherokuにプライベートステージングサーバーをセットアップしたいと思います。それは可能ですか?
絶対に。最も簡単な解決策は、Railsの組み込みの基本認証サポートを使用するものをアプリケーションコントローラーに配置することです(ここを参照: http://railscasts.com/episodes/82-http-basic-authentication )そしてそれをあなたのRails.env
の条件でラップするだけです。 Herokuでは、デフォルトでRails_ENVが本番環境に設定されていますが、heroku config
( http://docs.heroku.comを使用して、本番環境以外のアプリでこれを変更できます。/config-vars )。
ロードブロッキングスタイルのRackミドルウェアをインストールすることも検討できますが、私は上記を使用します。
よりクリーンな方法は、数行の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
このヒントは、Ole MortenAmundsenの好意によるものです。詳細とHerokuパスワードの指定:
Rails4で、「後に挿入するミドルウェアがありません:Rack :: Lock」エラーが発生しました。 Adamのコードを以下に置き換えます。
# 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-herok
認証にMozillaPersonaを使用するNiceherokuアドオンがあります。少量のサイト(1か月あたりの認証数が10,000未満)の場合は無料です。
https://addons.heroku.com/wwwhisper
インストールと構成が非常に簡単です。
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の場合:
heroku config:set HTTP_AUTH=test:test
ウィンドウプロンプトが表示されたら、ユーザー/パスワード=>テスト/テストを入力する必要があります。
それはあなたがそれが役に立つと思うことを願っています。
Rails 5. config/application.rb
または選択した環境構成で:
config.middleware.use(Rack::Auth::Basic) do |u, p|
[u, p] == ["user", "password"]
end
さらに、 Oleのブログ投稿 でENV変数を使用することが指摘されています。 env varが設定されていない場合は、デフォルトでランダムなパスワードを使用することをお勧めします。
config.middleware.use(Rack::Auth::Basic) do |u, p|
[u, p] == [ENV['USER'], ENV['PASSWORD'] || SecureRandom.hex]
end