目的
閲覧できるユーザーを制限するために、Basic認証を導入する。
Basic認証とは、HTTP通信の規格に備え付けられている、ユーザー認証の仕組み。
ユーザー名とパスワードを知っているユーザーのみが、アプリケーションを使えるように、制限をかけるために実装する。
- Basic認証を導入する
① Basic認証の記述を、application_controller.rbに書く
Basic認証によるログインの要求は、全てのコントローラーで行いたい。
そのため、一まとめで命令できるよう、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
以上のように、「username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"] 」と環境変数を利用しているのは、不正にBasic認証を突破されないようにするため。
ユーザー名やパスワードをコードに直接記述し、公開リポジトリで管理すると、危険である!
② 開発環境に対して、環境変数を定義する
シェルと呼ばれるプログラムを用いて、環境変数を定義する。
シェルとは、「ターミナルとOSを繋ぐ窓口役」。
ターミナルから入力されたコマンドを読み取って、OSに対して指示を渡し、結果をターミナルに返して表示や実行などの動作をさせる。
1.ターミナルでファイルを開く
% vim ~/.zshrc
2.zshファイルに記述を追加する
そして、「iキー」を押して、INSERTモードにする。
zshの内部に、以下の記述を追加する。(今までの記述は消さない)
export BASIC_AUTH_USER='kumamon'
export BASIC_AUTH_PASSWORD='1234567'
3.ファイルを閉じる
「escキー」→「:wq」→「Enterキー」
4.内容を保存する
% source ~/.zshrc
③ 本番環境に対して、環境変数を定義する
1.Heroku上で環境変数を設定する
% heroku config:set BASIC_AUTH_USER="kumamon"
% heroku config:set BASIC_AUTH_PASSWORD="1234567"
2.設定できているかの確認
% heroku config
[結果]
=== stormy-journey-22625 Config Vars
BASIC_AUTH_PASSWORD: kumamon
BASIC_AUTH_USER: 1234567
3.コミット & Herokuへデプロイ
% git add .
% git commit -m "Basic認証を実装"
% git push heroku master