あるRailsアプリをHerokuにデプロイして個人用に動かしているのですが、
そこにBasic認証の機能を設定したときのメモです。
Controller全体に認証をかける
application.rb
class ApplicationController < ActionController::Base
before_action :basic
private
def basic
authenticate_or_request_with_http_basic do |name, password|
name == ENV['BASIC_AUTH_NAME'] && password == ENV['BASIC_AUTH_PASSWORD']
end
end
end
これだけです。
また、プロダクション環境だけBASIC認証をかけたいなら
if Rails.env == "production"
を追記し、特定のコントローラーだけに認証をかけたいならapplication.rb
ではなくそのコントローラーのファイルに書きます。
僕の場合は.env
で環境変数を管理しているのでそちらに記載します。
.env
BASIC_AUTH_NAME=hegohego
BASIC_AUTH_PASSWORD=fugafuga
Herokuの環境変数も設定する
これはもうRailsの知識ではなくHerokuの知識ですが、一応。
# herokuの環境変数を確認
$ heroku config
# herokuの環境変数を追加・変更
$ heroku config:set BASIC_AUTH_NAME=hogehoge
$ heroku config:set BASIC_AUTH_PASSWORD=fugafuga