Just do IT

思うは招く

Rails でダイジェスト認証を実装する方法

app/controllers/application_controller.rbに以下を記述。

class ApplicationController < ActionController::Base
  USERS = { "admin" => "admin" }
  before_action :authenticate

  private

  def authenticate
    authenticate_or_request_with_http_digest do |username|
      USERS[username]
    end
  end
end
  • ダイジェスト認証は、ユーザー名とパスワードをMD5方式のハッシュ形式で暗号化して送信する
  • つまりパスワードを平文で送信しない
USERS = { "ユーザー名" => "パスワード" }
USERS = { "admin" => "admin" }

と書いて変数USERSに保存。

authenticate_or_request_with_http_digest

このメソッドでダイジェスト認証を実装できる。

before_action :authenticate

before_actionというフィルターをかけることで、すべてのアクションに対して、前処理を指定できる。 つまり、ここに設定したメソッドが実行されないと、その後に待ち構えているアクションが実行できない。なぜなら、コントローラーの大本であるapp/controllers/application_controller.rbに記述しており、これを他のコントローラーが継承しているため。

「切符を買わないと電車に乗れない」みたいな?