🔐

[Rails]Basic認証の設定方法

2023/10/10に公開

実現したいこと

オリジナルアプリにアクセスできるユーザーを限定するために、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 == 'basic' && password == '123456'
    end
  end
end

username == 'basic' のbasicに認証用のIDを、password == '123456'の123456に認証用のパスワードを入力します。任意の文字列でOK!

この時点で、ローカル環境ではBasic認証が設定されています。

環境変数の設定

Basic認証は実装できたけど、このままGitにpushするのはNG!
なぜならソースコードに直接ID/PWが記述されているので、そこから情報を入手した他者がBasic認証を突破できてしまうためです。

そこで「環境変数」を設定し、コードに直接ID/PWを記述せずにBasic認証が利用できるようにします。

  1. ターミナルで以下のコマンドを実行します。
% vim ~/.zshrc

2. 「i」を押してインサートモードに移行する。ターミナルに「INSERT」と表示されればOK。
4. zshに以下の記述を追加する。

export BASIC_AUTH_USER='basic'
export BASIC_AUTH_PASSWORD='123456'
  1. 「escキー」→「:wq」を入力し、「Enter」を押す。
  2. 「sourceコマンド」を実行する。
source ~/.zshrc
  1. application_controller.rbのID/PWを環境変数に置き換える。
class ApplicationController < ActionController::Base
  before_action :basic_auth

  private

  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

用語の解説

vim(ヴィム)

一言でいうと、Vimとは「テキストエディタ」のことです。プログラミング言語ではありません。
ただ、一般的なテキストエディタ(AtomやVSCodeなど)とは大きく異なる特徴を持っています。
それは、AtomやVSCodeがGUI(マウスとかで操作できる)なのに対し、Vimは「CLI(ターミナルでコマンド操作)」だということです。
つまり、ターミナルからコマンドを打ち込むことで、Vimというテキストエディタを操作することができます。

zsh(ジーシェル)

zshとは、shell(シェル)の1つで、OSとアプリケーションの間に立ち、ユーザからの要求をシステムに伝えるためのユーザインターフェースです。
シェルとは、コマンドを入力することで動くプログラムのことです。

参考記事

https://www.engilaboo.com/what-is-vim/
https://envader.plus/course/7/scenario/1034

Discussion