Basic 認証の設定方法と自分なりの注意点を
開発環境
ruby 2.6.5
Ruby on Rails 5.2.5
MacOS
設定方法
大きく2種類のメソッドがありそう
1, authenticate_or_request_with_http_basic メソッド
class HogeController < ApplicationController
before_action :basic_authenticate
def basic_authenticate
authenticate_or_request_with_http_basic do |name, password|
name == ENV['BASIC_AUTH_NAME'] && password == ENV['BASIC_AUTH_PASSWORD']
end
end
end
2. http_basic_authenticate_with メソッド
class ApplicationController < ActionController::Base
http_basic_authenticate_with name: ENV['BASIC_AUTH_NAME'], password: ENV['BASIC_AUTH_PASSWORD']
end
両方とも環境変数を使ったコード
全体に認証をかけたかったら application.controller 内に記入する
以下参考にした記事
環境変数の設定方法
heroku の場合
herokuにあげているアプリのカレントディレクトリで
heroku config:set BASIC_AUTH_NAME="(各自で入力)"
heroku config:set BASIC_AUTH_PASSWORD="(各自で入力)"
heroku config で確認
以下参考にした記事
local の場合
1, 'dotenv-rails' を使って設定する
上記のテキストの通り
2, ターミナルからマシンに直接設定する(Mac)
ターミナル上のどこかで
export BASIC_AUTH_NAME= ”(各自で入力)”
export BASIC_AUTH_PASSWORD=”(各自で入力)”
printenv
をすると自分設定した環境変数を確認出来る
注意点
Basic 認証はキャッシュが残っていると効かないので、2回目以降の確認の際にはキャッシュの削除が必要
ブラウザのキャッシュを消しても heroku のキャッシュは消えない
この点は何回かやってみたのですが、
何回やっても heroku 上での2回目以降の認証ができませんでした。
マシン上に環境変数を追加しても時間が立つと消える
本来は ~/.zshrc (もしくは ~/.bash_profile)に書き込むようです。
マシン上に環境変数を設定するときには下手に上書きしないように気をつける
dotenv でやるほうがいいとおもいます