プログラム開発の情報や、雑記を投稿しているサイトです。

CakePHP4 | Authentication プラグインを利用したユーザー認証の実装

ここでは、Authentication プラグインを利用したユーザー認証の実装方法を解説いたします。

詳細については、公式サイトを参照してください。

また、公式サイトのチュートリアルでは、ユーザーIDにメールアドレスを利用していますが、

ここでは、ユーザー名を利用して、認証する方法で解説いたします。

公式サイト

https://book.cakephp.org/4/ja/tutorials-and-examples/blog-auth-example/auth.html

ユーザーに関連するコード作成

テーブルの作成

はじめに、ユーザーデータを保持するためのデータベースの中に新しいテーブルを作成します。

モデル修正

ログイン画面の生成

まずは、bakeでひな形を作成し、その後に、model、controllerを修正します。

UsersTable の修正

src/Model/Table/UsersTable.php

UsersController

src/Controller/UsersController.php

add.php

認証の追加

パスワードハッシュの追加

次に User エンティティを作成し、パスワードハッシュを追加します。
src/Model/Entity/User.php エンティティファイルを作成し、以下を追加します。

src/Model/Entity/User.php

これでパスワードのプロパティがユーザに割り当てられるたびに DefaultPasswordHasher クラスを使ってハッシュ化されるようになります。

認証の設定

src/Application.php で、以下のインポートを追加します。

アプリケーションクラスに認証インターフェースを実装します。

src/Application.php

その後、次のように追加します。

src/Application.php

AppController クラスに以下のコードを追加します。

src/Controller/AppController.php

UsersController に以下のコードを追加します。

すべての view と index のページにログインせずにアクセスできるようにする場合には、
以下の設定を AppController に追加します。

src/Controller/AppController.php

ログアウト

ログアウトアクションを UsersController クラスに追加します。

src/Controller/UsersController.php

これで /users/logout にアクセスしてログアウトすることができます。
そうするとログインページが表示されるはずです。

動作確認

ユーザーの追加

/users/add にアクセスして、ユーザーの登録を行います。

ログイン

/user/ にアクセスして、未認証のため、ログイン画面が表示されます。

ユーザー名、パスワードを入力して、ログインします。

認証が成功すると、ユーザー一覧画面が表示されます。

ログアウト

/users/logout にアクセスすると、再び、ログイン画面が表示されます。

おススメ書籍

国本大悟 (著), 須藤秋良 (著), 株式会社フレアリンク (監修)


山田 典明 (著), 長澤 賢 (著), 関口 勇樹 (著)


中山清喬 (著), 飯田理恵子 (著), 株式会社フレアリンク (監修)