Basic認証の導入方法(Heroku)
Basic認証とは、Webアプリを閲覧できるユーザーを制限するために導入するものです。このBasic認証を導入すると、URLにアクセスした際に、事前に設定したユーザー名とパスワードを入力しなければならなくなります。
1. 開発環境で環境変数を設定
3. 本番環境で環境変数の設定
行うことは以上の3点です。
1. 開発環境で環境変数を設定
まずユーザー名とパスワードを環境変数化します。ターミナルで下記のコマンドを実行していきましょう。MacOSがCatalina以降の場合です。
ターミナル
% vim ~/.zshrc
「iキー」を押してユーザー名とパスワードを設定します。
export BASIC_AUTH_USER='ユーザー名' export BASIC_AUTH_PASSWORD='パスワード'
「escキー」と「:wq」を押して終了し、下記のコマンドを実行します。
% source ~/.zshrc
2. 環境変数をRailsで読み込む
コントローラーで下記の記述をします。インデントが整っていないのはブログの仕様上です。
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :basic_auth
private
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
3. 本番環境で環境変数の設定
ターミナルで下記のコマンドを実行します。
ターミナル
% heroku config:set BASIC_AUTH_USER="ユーザー名" % heroku config:set BASIC_AUTH_PASSWORD="パスワード"
下記のコマンドで反映できているか確認できます。
% heroku config
下記のコマンドでコミットしてデプロイできます
% git add .
% git commit -m "Basic認証の導入"
% git push heroku master
おまけではありますが、このBasic認証を導入している場合、コントローラーのテストコードを実行した際にエラーが起きました。
テストコードの際はBasic認証を使わないという記述を加えることで解決しました。
以上です。