webサービスを作って、本番環境にアップ、、でもまだ外部の人に見られるわけにいかない、、という場合がありますが
そのために、知ってる人でないと閲覧できないようにする、Basic認証というものをやってみました。
名前だけは聞いたことがあったのですが、今まではよくわからなかったので、実案件でやることになったため、まずは自分のサービスにつけてみよう!ということでつけたら結構簡単にできましたのでご紹介します。
本番環境のBasic認証
本当にあ、これだけでよかったんですね、、、という感じです。
application_controller.rb
class ApplicationController < ActionController::Base
before_action :basic_auth, if: :production?
protect_from_forgery with: :exception
private
def production?
Rails.env.production?
end
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
BASIC_AUTH_PASSWORDとBASIC_AUTH_USERは直接入れると危険なので
herokuのconfig.varに入れるか、ターミナルからBASIC_AUTH_PASSWORDとBASIC_AUTH_USERに任意のものを入れる。
(エディタをコピペしたら、インデントが変になりました)
または.envファイルに定義して、gitignoreで.envに入れ、githubからみられないようにする。
コンソールでheroku configとうち、値が入っていたらOK。
リモートリポジトリにpushし、herokuにもpushすれば完成。
アプリのurlでユーザー名、パスワードが要求されて、入力して解除されれば成功。
参考にさせていただいた記事
私はherokuで作ったので↑のproduction.rbの記載は特になしです。