こんにちは!kossyです!
元々腹痛持ちなのですが、ここ最近その症状が悪化しています。
多分原因はペットボトルのラッパ飲みだと思うので、
今後は控えようかと思います、、、
さて、今回はRailsアプリケーションへのBasic認証の導入方法をブログに残そうかと思います。
Basic認証は、あらかじめ設定してあるパスワードとユーザー名を入力することで、
Webアプリへのアクセスを許可する認証方式です。
Basic認証はセキュリティ上の問題があり、ユーザー名とパスワードが平文で送られるため、漏洩のリスクがあります。
なので、必要最低限のセキュリティ認証だと思ったほうがいいようです。
今回は本番環境での実装方法を以下に示します。
まずはターミナルで環境変数を設定します
$ vim ~/.bash_profile # 下記を記述 export BASIC_AUTH_USER='任意の文字列' export BASIC_AUTH_PASSWORD='任意の数列' $ source ~/.bash_profile
その後、
application_controller.rbに以下のコードを記述
class ApplicationController < ActionController::Base before_action :basic_auth, if: :production? protect_from_forgery with: :exception private def production? Rails.env.production? end def basic_auth authenticate_or_request_with_http_basic do |username, password| username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"] end end end
production?メソッドは、本番環境ならtrue、そうでないならfalseを返すように、
Rails.env.production?と記述します。そして、before_action :basic_auth の後に、
if: :production?と記述することによって、本番環境のみでbasic_authメソッドが実行されるようになります。
これで本番環境でのみBasic認証を導入できます。
Rails.envメソッドは、
Rails.env.development? Rails.env.test? Rails.env.production? Rails.env.your_custom_environment?
等の使い方をし、
現在のRails環境をチェックすることができます。
ちなみに公式には、
You can check your current Rails environment using nice methods
と記述があり、グーグル翻訳大先生に翻訳させてみると、
[現在のRails環境を素敵な方法でチェックすることができます]
と素敵な翻訳結果を返してくれます。