##初めに
初学者です。学習のためにアウトプットしています。間違いなどありましたらご指摘お願いします。
Basic認証
Basic認証とはHTTP通信の規格に備え付けられている、ユーザー認証の仕組みのことです。
サーバーとの通信が可能なユーザーとパスワードをあらかじめ設定しておき、それに一致したユーザーのみが利用できる認証システムです。
ページに遷移した時にこんな感じで出てきます。
![]
(https://gyazo.com/13f36b70ca09578f405352b42da60fe4.png)
railsアプリにBasic認証を導入する。
まずはauthenticate_or_request_with_http_basicメソッドを使用します。
こちらのメソッドはBasic認証を使うために利用するメソッドになります。全てのコントローラーに使用するためapplication_controller.rbに記述します。
class ApplicationController < ActionController::Base
before_action :basic_auth
private
def basic_auth
authenticate_or_request_with_http_basic do |username, password|
username == 'hoge' && password == '1234'
end
end
end
これで設定完了です。ちなみにユーザーnameはhoge
パスワードは1234
です。
しかしこのままでは問題があります。コード上にBasicコードが記述されていることです。GitHub上に公開した場合、Basicコードのパスワードが誰にでも読める状態になっているからです。
その対策として環境変数を利用する必要があります。環境変数はzsh,またはbashの設定ファイルに記載します。
では軽く用語の説明をしていきます。
####zsh
zshとはログインシェルと呼ばれるものです。簡単に言えば隠しファイルみたいなものです。そしてプログラムの一番最初に対応します。
####bash
bashもログインシェルの1つです。違いはMacのosによってzshかbashを使うかの違いです。
####vim
vimとはサーバー上で使用できるテキストエディタのこと。vim
コマンドを使うことで指定したファイルの編集をターミナルから行うことが可能になります。
##環境変数の設定
私のMacではzshのためzshを使用していきます。
まずはターミナルに以下のコマンドを使用します。
% vim ~/.zshrc
~
~
~
~
のように〜が縦並びでたくさん出てきます。
そのあとiキーを押してインサートモードに移行します。ターミナル左下にINSERTと出てきます。
そのあとにzah内に以下の記述をしていきます。
export BASIC_AUTH_USER='hoge'
export BASIC_AUTH_PASSWORD='1234'
記述が終わったらescキーを使用して:wqと入力し、Enterキーを押します。
最後にsourceコマンドを実行します。
source ~/.zshrc
このsouceコマンドとはシェルに記述された内容を実行する役割があります。
そしてapplication_controller.rbに環境変数を読み込む記述をすれば完成です。
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="hoge"
% heroku config:set BASIC_AUTH_PASSWORD="1234"
最後にherokuにpushして完成になります。