手順はこんな感じ
- application_controller.rb にBasic認証のメソッドを追加
- Basic認証をかけたい箇所のcontrollerのbefore_actionで 1で作成したメソッドを呼び出す
- 環境変数を任意の環境に設定する
application_controller.rb にBasic認証のメソッドを追加
def hoge_basic_auth
authenticate_or_request_with_http_basic do |username, password|
username == ENV["HOGE_BASIC_AUTH_USER"] && password==ENV["HOGE_BASIC_AUTH_PASSWORD"]
end
end
「authenticate_or_request_with_http_basic」はRailsが用意してくれているBasic認証をするためのメソッドです。
Basic認証に用いるusernameやpasswordは環境変数にしておきましょう。
ソースコードが漏れた際に、悪用される可能性がある為です。
Basic認証をかけたい箇所のcontrollerのbefore_actionで 1で作成したメソッドを呼び出す
class HogeController < ApplicationController
before_action :hoge_basic_auth, if: :production?
特定のページでBasic認証をかけたい場合は上記のように。
ページ全体にかけたい場合は、ApplicationControllerに同じように記載します。
普通は本番環境にかけるだけでいいと思うので、if: :production? としています。
環境変数を任意の環境に設定する
本番環境にssh接続して、bash_profileに記載。
export HOGE_BASIC_AUTH_USER='user'
export HOGE_BASIC_AUTH_PASSWORD='pass'
source .bash_profile を忘れずに行ってから、Basic認証かかっているか確認しましょう。
因みに、以下のコマンドで環境変数を確認出来ます。
printenv HOGE_BASIC_AUTH_USER
printenv HOGE_BASIC_AUTH_PASSWORD