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
に記述しており、これを他のコントローラーが継承しているため。
「切符を買わないと電車に乗れない」みたいな?