Basic認証とは
HTTP通信に元々備えられているユーザー認証の仕組み。
あるアプリケーションに利用可能なユーザー名とパスワードをあらかじめ設定しておき、ユーザーが利用しようとした際設定していたユーザー名とパスワードを入力させてログインできるようにする機能。要するに個別のパスワード設定ではなく全員に共通したパスワードでログインさせるようなこと。Railsで作成したアプリにBasic認証を導入するのは比較的簡単にできるようなので試してみたいと思います。
Basic認証を実装するメソッド
Railsにはbasic認証を実装する’authenticate_or_request_with_http_basic’というメソッドが用意されているので、それを使ってbasic認証を実装してみたいと思います。
ベーシック認証が成功したらトップページに
と表示されるようにします。
authenticate_or_request_with_http_basicの記述
authenticate_or_request_with_http_basicメソッドはコントローラーに記述し、各アクションを実行する前のbefore_actionとして実装します。
class ApplicationController < ActionController::Base
before_action :basic_authentication
private
def basic_authentication
authenticate_or_request_with_http_basic do |user_name, password|
user_name == 'hoge' && password == 'huga'
end
end
end
このような画面が表示され、ユーザー名とパスワードの入力を求められます。
ユーザー名とパスワードを入力してログインボタンを押すと...
認証に成功し、トップページが表示されました!めちゃくちゃ簡単!
認証範囲を限定することもできる
先ほどの例では全てのアクションにBasic認証が効く設定にしましたが、ある特定の範囲(ページ)に効果を限定することができます。「このページは誰でも見れていいけど、ここから先は特定の人にしか見せたくない」ような場合に有効かと思います。
・tasks_controller.rb編集
class TasksController < ApplicationController
before_action :basic_authentication, only: :show # showアクションにだけベーシック認証をかける
def index; end
def show; end
end
このように実装すると、showアクションにだけベーシック認証をかけられるようになります。