アラフォーからのプログラミングとデザイン

大人から始めたプログラミングとデザインについてのあれこれ

herokuの本番環境でRailsアプリにBasic認証をかける

f:id:simpledancer:20201001152646j:plain

webサービスを作って、本番環境にアップ、、でもまだ外部の人に見られるわけにいかない、、という場合がありますが

そのために、知ってる人でないと閲覧できないようにする、Basic認証というものをやってみました。

 名前だけは聞いたことがあったのですが、今まではよくわからなかったので、実案件でやることになったため、まずは自分のサービスにつけてみよう!ということでつけたら結構簡単にできましたのでご紹介します。

simpledancer.hatenablog.com

本番環境の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でユーザー名、パスワードが要求されて、入力して解除されれば成功。

 

simpledancer.hatenablog.com

参考にさせていただいた記事

qiita.com

私はherokuで作ったので↑のproduction.rbの記載は特になしです。