0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Basic認証を実装する

Posted at

目的

閲覧できるユーザーを制限するために、Basic認証を導入する。

Basic認証とは、HTTP通信の規格に備え付けられている、ユーザー認証の仕組み。
ユーザー名とパスワードを知っているユーザーのみが、アプリケーションを使えるように、制限をかけるために実装する。

  1. Basic認証を導入する

① Basic認証の記述を、application_controller.rbに書く

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 == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"] 
    end
  end


end

以上のように、「username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"] 」と環境変数を利用しているのは、不正にBasic認証を突破されないようにするため。

ユーザー名やパスワードをコードに直接記述し、公開リポジトリで管理すると、危険である!

② 開発環境に対して、環境変数を定義する

シェルと呼ばれるプログラムを用いて、環境変数を定義する。
シェルとは、「ターミナルとOSを繋ぐ窓口役」。
ターミナルから入力されたコマンドを読み取って、OSに対して指示を渡し、結果をターミナルに返して表示や実行などの動作をさせる。

 1.ターミナルでファイルを開く

% vim ~/.zshrc

 2.zshファイルに記述を追加する

そして、「iキー」を押して、INSERTモードにする。
zshの内部に、以下の記述を追加する。(今までの記述は消さない)

export BASIC_AUTH_USER='kumamon'
export BASIC_AUTH_PASSWORD='1234567'

3.ファイルを閉じる

「escキー」→「:wq」→「Enterキー」

4.内容を保存する

% source ~/.zshrc

③ 本番環境に対して、環境変数を定義する

1.Heroku上で環境変数を設定する

% heroku config:set BASIC_AUTH_USER="kumamon"
% heroku config:set BASIC_AUTH_PASSWORD="1234567"

2.設定できているかの確認

% heroku config


[結果]
=== stormy-journey-22625 Config Vars
BASIC_AUTH_PASSWORD:      kumamon
BASIC_AUTH_USER:          1234567

3.コミット & Herokuへデプロイ

% git add .
% git commit -m "Basic認証を実装"
% git push heroku master
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?