目的
Railsで作成したアプリにBasic認証を導入する。
開発環境
macOS: Big Sur
Rubyバージョン: 2.6.5
Railsバージョン: 6.0.0
前提
- アプリ
test-appが作成されている。
【Rails】簡単な投稿アプリの作成
手順
はじめに
今回はBasic認証を導入していきます。
Basic認証とは、HTTP通信の規格に備え付けられている、ユーザー認証の仕組みのことです。
サーバーとの通信が可能なユーザーとパスワードをあらかじめ設定しておき、それに一致したユーザーのみが、Webアプリケーションを利用できるようにします。
Basic認証の準備
まずBasic認証の準備として、ユーザーとパスワードを設定します。
% vim ~/.zshrc
「iキー」を押して、インサートモードに移行し、zshの内部に、以下の記述を追加します。
今回、ユーザーは「admin」、パスワードは「2222」とします。
export BASIC_AUTH_USER='admin'
export BASIC_AUTH_PASSWORD='2222'
記述を追加したら「escキー」、 「:wq」を入力後、、「Enterキー」を押して終了します。
最後に、「sourceコマンド」を実行します。
% source ~/.zshrc
これで、BASIC_AUTH_USERとBASIC_AUTH_PASSWORDという名前で、それぞれユーザー名とパスワードを定義できました!
続いて、この環境変数をRailsアプリ側で読み込むようにします!
Basic認証の導入
続いてauthenticate_or_request_with_http_basicメソッドを利用して、Basic認証を導入します。
authenticate_or_request_with_http_basicメソッドとはBasic認証を実装するために使用する、Railsのメソッドです。
ブロックを開き、ブロック内部でusernameとpasswordを設定することでBasic認証を利用できます。
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
これでBasic認証が導入でき、どのページにアクセスしてもBasic認証が要求されるようになりました!
実際に確認してみて正常に動作すれば完了です!
最後に
以上で、Basic認証の導入は完了です。
では。