0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CakePHP2.xのルーティング仕様

Posted at

CakePHP 2.x における認証とルーティングの基本仕様

リプレイスで久しぶりにCakePHP2.xを触る機会がありましたので、個人用のメモも兼ねて書きました。
この記事では、CakePHP 2.x での認証コンポーネント(Auth コンポーネント)とルーティング設定の基本的な仕組みについて説明します。具体的には、ログイン前後の動作やリダイレクト先の設定、デフォルトのルーティングについて解説します。


1. 認証コンポーネントの設定例

以下は、認証とメッセージ表示に利用するコンポーネントの設定例です。
この設定例では、ログイン成功時、ログアウト時のリダイレクト先、そしてパスワードの検証方式として Blowfish を指定しています。

public $components = array(
    'Flash',
    'Auth' => array(
        'loginRedirect' => array(
            'controller' => 'example',  // ログイン成功後に遷移するコントローラ
            'action' => 'index'         // ログイン成功後に実行されるアクション
        ),
        'logoutRedirect' => array(
            'controller' => 'pages',    // ログアウト完了後に遷移するコントローラ
            'action' => 'display',      // ログアウト完了後に実行されるアクション
            'home'                    // 表示するビューなどのパラメータ(例:ホームページ)
        ),
        'authenticate' => array(
            'Form' => array(
                'passwordHasher' => 'Blowfish'  // パスワード検証に使用するハッシュアルゴリズム
            )
        )
    )
);

Flash コンポーネント

  • 役割: ユーザーへの通知(成功メッセージ、エラーメッセージなど)の表示に使用されます。
    例えば、ログイン失敗時にエラーメッセージを画面上に表示する場合などに利用されます。

Auth コンポーネントの各設定

  • loginRedirect

    • 内容:
      • コントローラ: example
      • アクション: index
    • 動作:
      ログインに成功すると、ユーザーはこの設定に従って指定先にリダイレクトされます。
      これにより、ログイン後の遷移先を統一的に管理できます。
  • logoutRedirect

    • 内容:
      • コントローラ: pages
      • アクション: display
      • 追加パラメータ: home
    • 動作:
      ログアウト処理が完了すると、ユーザーはこの設定先にリダイレクトされます。
      例として、ホームページ表示などに利用されることが一般的です。
  • authenticate

    • 内容:
      • Form 認証方式で、Blowfish をパスワードハッシュ方式として採用
    • 動作:
      ユーザーがログインする際、送信されたパスワードは Blowfish アルゴリズムによるハッシュと照合され、認証の安全性が確保されます。

2. ルーティング仕様(認証以外の部分)

CakePHP では、認証以外のルーティングは app/Config/routes.php で設定されます。以下に、デフォルトルーティングとルート (/) の取り扱いについて説明します。

デフォルトルーティングの基本

  • 設定場所:
    app/Config/routes.php
  • 仕様:
    デフォルトルーティングは、/:controller/:action/* という形式で定義されています。
    つまり、URL の最初の部分がコントローラ名、2 番目の部分がアクション名に対応します。
  • 動作:
    アクションが省略された場合は、自動的に index アクションが呼び出されます。
    たとえば、http://localhost:8080/sample/module にアクセスすると、
    • コントローラ: ModuleController
    • アクション: 指定がなければデフォルトの index アクションが実行されます。

ルート (/) へのアクセス設定

  • 設定場所:
    app/Config/routes.php 内の Router::connect('/', array(...));

  • 一般的な設定例:

    Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
    
  • 動作:
    この設定により、ルート URL(/)にアクセスすると、

    • コントローラ: PagesController
    • アクション: display
    • パラメータ: home(例として、ホームページの表示に利用)

    が呼び出され、サイトのトップページとして表示される仕組みとなっています。


3. 認証状態による動作の流れ

CakePHP の Auth コンポーネントは、認証状態に応じて自動的にリダイレクト処理を実施します。以下は、各認証状態における動作の概要です。

ログイン前(未認証状態)

  • 動作:
    ユーザーが認証を必要とするページにアクセスすると、Auth コンポーネントは認証済みかどうかをチェックします。
    未認証の場合、デフォルトの loginAction(多くの場合 /users/login など、設定に応じた URL)に自動的にリダイレクトされます。
  • ポイント:
    • この設定は明示的に行うことも可能ですが、特に指定しない場合は CakePHP のデフォルト動作が適用されます。

ログイン済の状態

  • 動作:
    認証済みのユーザーは、通常のルーティング設定に従ってリクエストが処理されます。
    URL によって自動的にコントローラとアクションが判断され、リクエストが実行されます。

ログイン成功時のリダイレクト

  • 動作:
    ユーザーがログインに成功すると、Auth コンポーネントは loginRedirect の設定に従い、
    指定されたコントローラのアクションにリダイレクトします。
    これにより、ログイン後の画面遷移を一元管理できます。

ログアウト時のリダイレクト

  • 動作:
    ログアウト処理が完了すると、Auth コンポーネントは logoutRedirect の設定に従い、
    指定されたコントローラのアクションにリダイレクトします。
    これにより、ログアウト後の表示内容(例として、ホームページの表示など)が適切に管理されます。

4. まとめ

  • Flash コンポーネント
    ユーザーへの通知表示に利用され、成功やエラーメッセージの表示を担います。

  • Auth コンポーネント
    以下の設定により認証処理を一元管理します:

    • loginRedirect: ログイン成功後、指定されたコントローラの index アクションにリダイレクト
    • logoutRedirect: ログアウト完了後、指定されたコントローラの display アクション(追加パラメータ付き)にリダイレクト
    • authenticate: パスワード検証は Blowfish ハッシュ方式を使用
  • ルーティング設定
    app/Config/routes.php によって、URL とコントローラ/アクションの対応が自動的に行われます。

    • URL にアクションが省略された場合、デフォルトで index アクションが実行される仕様です。
    • ルート URL (/) は、専用の設定に従ってトップページが表示されます。

以上の仕組みにより、CakePHP 2.x のアプリケーションは認証関連の処理と、通常のルーティング処理が明確に分離され、かつ統一的に管理されます。
この設計により、開発者は各種認証状態に応じた適切な画面遷移や、効率的な URL マッピングを実現できます。


0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?