CakePHP3のAuthコンポーネントでContoller名称とは異なるテーブルを認証対象テーブルにする方法

投稿者: Anonymous

お世話になります。

現在CakePHP3でAuthコンポーネントを用いたログイン処理を作成しております。

ネット上によくあるサンプルコードなどで提示されている「users」というテーブルを作成し
下記のようなコントローラとモデルを作成することでログイン認証は行えました。
Controller: UsersController.php
Model:
Table>UsersTable.php
Entity>User.php

ただ、今回決まっているテーブル名称のテーブルに対して認証処理を行いたいのですが
下記のような形式にしてもControllerの名称の頭部分の名称のテーブルを参照しようとしてエラーが発生します。
エラー内容:Base table or view not found: 1146 Table ‘[db名].login’ doesn’t exist
Controller: LoginController.php
Model:
Table>AccountsTable.php
Entity>Accout.php

上記のような形式で、LoginController.phpでAccountsテーブルを認証対象のテーブルにすることは可能でしょうか?

解決

認証ハンドラの設定 | CakePHP CookBook
https://book.cakephp.org/3.0/ja/controllers/components/authentication.html#id5

userModel オプションで認証に利用するTableクラスを指定できます。

$this->Auth->config('authenticate', [
    AuthComponent::ALL => ['userModel' => 'Accounts'],
    'Form'
]);
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *