自分の備忘録用
Basic認証とは
ベーシック認証(Basic認証)とはWebサイトの特定の領域、つまりページやファイルにアクセス制限をかけることができる認証方法の1つ。ベーシック認証をかけると、認証をかけたWebサイトにアクセスしようとしたとき、認証ダイアログが立ち上がって、ユーザー名(ID)とパスワードの入力が求められる。設定方法
まずトップページのコントローラーに before_action :basic_authを定義する。
「basic_auth」は変数名なので名前はこれじゃなくてもいい。
class アプリ名Controller < ActionController::Base
before_action :basic_auth
private
def basic_auth
authenticate_or_request_with_http_basic do |username, password|
username == 'ユーザー名' && password == '好きなパスワード'
end
end
end
ここに出てくる「authenticate_or_request_with_http_basic」と言うメソッドはRailsに用意されているメソッドで
Basic認証を使うときに必要、ブロックの中にusernameとpasswordを入れdo〜endの中にそれぞれ設定する
保守性
でもこのままだとパスワードが丸見えになるので環境変数を設定しその中にusernameとpasswordを代入する形を取る。 macOSがCatalina以降なら 俺はCatalinaなのでこっち
% vim ~/.zshrc
# .zshrcを開いたら、「i」とタイプしてインサートモードに移行
# .zshrcの内部に次の記述を追加
export BASIC_AUTH_USER='ユーザー名'
export BASIC_AUTH_PASSWORD='好きなパスワード'
# 記述を追加したら、escキーを押してインサートモードを抜け、 「:wq」と入力して保存して終了する
# .zshrcを再読み込みし、定義した環境変数を有効にする
% source ~/.zshrc
macOSがMojave以前なら
$ vim ~/.bash_profile
# .bash_profileを開いたら、「i」とタイプしてインサートモードに移行
# .bash_profileの内部に次の記述を追加
export BASIC_AUTH_USER='ユーザー名'
export BASIC_AUTH_PASSWORD='好きなパスワード'
# 記述を追加したら、escキーを押してインサートモードを抜け、 「:wq」と入力して保存して終了する
# .bash_profileを再読み込みし、定義した環境変数を有効にする
$ source ~/.bash_profile
設定できたらコントローラーに戻って以下に編集
def basic_auth
authenticate_or_request_with_http_basic do |username, password|
username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"] # 環境変数を読み込む記述に変更
end
end
heroku上にも環境変数を反映させるには
% heroku config:set BASIC_AUTH_USER="ユーザー名"
% heroku config:set BASIC_AUTH_PASSWORD="好きなパスワード"
設定できたかを確かめるコマンド⬇︎
% heroku config
設定したらデプロイを忘れない
% git add .
% git commit -m "Basic認証を導入"
% git push heroku master