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

CakePHP

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

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

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

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

公式サイト

シンプルな認証と認可のアプリケーション - 4.x

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

テーブルの作成

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

モデル修正

ログイン画面の生成

まずは、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 にアクセスすると、再び、ログイン画面が表示されます。

おススメ商品

タイトルとURLをコピーしました