記事の概要
こちらの記事でアプリのHerokuデプロイした続きです。Railsアプリへのアクセスを制限するためにBasic認証を実装する。
Basic認証とは
Basic認証とは、HTTPで定義される認証方式の一つで、基本認証ともいう。サーバーとの通信が可能なユーザーとパスワードをあらかじめ設定しておき、それを知っているユーザーだけがアプリにアクセスできるようにする。
実装方法
① Railアプリへの導入
authenticate_or_request_with_http_basicメソッドを利用する。application_controllerにプライベートメソッドとして定義し、before_actionで呼び出す。
任意のユーザー名とパスワードをそれぞれusername, passwordとして設定するが、これらをコードに直接記述してしまうと公開リポジトリで読まれてしまう。したがって下記のように環境変数に設定してそれを読み込むようにする。
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
② 環境変数の設定
上記の環境変数の設定を行う。ローカル環境、本番環境(Heroku)それぞれに設定する。
ローカル環境
ログインシェルの設定ファイル、zshやbashに定義する。今回はzshの場合。
まず下記コマンドでzshをテキストエディタで開く。「vim」とは、サーバー上で使用できるテキストエディタ。
% vim ~/.zshrc
zshの中に以下のようにユーザー名とパスワードの記述を追加する。
export BASIC_AUTH_USER='任意の名前'
export BASIC_AUTH_PASSWORD='任意のパス'
最後に、sourceコマンドでzshファイルに記述した内容を実行する。
% source ~/.zshrc
本番環境(Heroku)
Heroku上に環境変数を設定する。ターミナルでコマンド実行。
% heroku config:set BASIC_AUTH_USER="任意の名前"
% heroku config:set BASIC_AUTH_PASSWORD="任意のパス"
③ Herokuへ変更をPush
コードを変えたので、コミットとHerokuへのPushを忘れずに。
# ターミナルで実行
% git add .
% git commit -m "Basic認証の導入"
% git push heroku master