Rails で Basic認証する方法

デフォルトで用意されている Basic 認証の仕組みの使い方。ユーザ名 chihaya, パスワード password72 とすると、以下のようにして行える。

Rails5.1以降

class ApplicationController < ActionController::Base
  http_basic_authenticate_with name name: 'chihaya', password: 'password72' unless Rails.env.production?
end

特定の処理でスキップしたい場合、 except を使うか、before_action で処理する

# except を使う場合
class NanohaController < ApplicationController
  http_basic_authenticate_with name name: 'chihaya', password: 'password72', except: :show unless Rails.env.production?

  def show
  end
end
# before_action を使う場合
class ApplicationController < ActionController::Base
  before_action :basic_authentication

  private

  def basic_authentication
    return if Rails.env.production?

    http_basic_authenticate_with name name: 'chihaya', password: 'password72'
  end
end

class NanohaController < ApplicationController
  skip_before_action :basic_authentication, only: [:show]

  def show
  end
end

Rails5.0以前

class ApplicationController < ActionController::Base
  before_filter :basic_authentication

  # テストだけ使うBasic認証
  protected
  def basic_authentication
    return if Rails.env.production?

    authenticate_or_request_with_http_basic do |user, pass|
      [user, pass] == ['chihaya', 'password72']
    end
  end
end

特定のActionはBasic認証かけたくないならば、skip_before_filter を使う。

class NanohaController < ApplicationController
  skip_before_filter :basic_authentication, only: [:show]

  def show
  end
end

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です