前提・実現したいこと
CakePHP3で認証機能を実装したいです。
https://book.cakephp.org/3.0/ja/tutorials-and-examples/cms/authentication.html
を参考に進めています。
該当のソースコード
PHP
1// src/Controller/AppController.php の中で 2namespace App\Controller; 3 4use Cake\Controller\Controller; 5 6class AppController extends Controller 7{ 8 public function initialize() 9 { 10 // 既存のコード 11 12 $this->loadComponent('Auth', [ 13 'authenticate' => [ 14 'Form' => [ 15 'fields' => [ 16 'username' => 'email', 17 'password' => 'password' 18 ] 19 ] 20 ], 21 'loginAction' => [ 22 'controller' => 'Users', 23 'action' => 'login' 24 ], 25 // コントローラーで isAuthorized を使用します 26 'authorize' => ['Controller'], 27 // 未認証の場合、直前のページに戻します 28 'unauthorizedRedirect' => $this->referer() 29 ]); 30 31 // display アクションを許可して、PagesController が引き続き 32 // 動作するようにします。また、読み取り専用のアクションを有効にします。 33 $this->Auth->allow(['display', 'view', 'index']); 34 } 35}
発生している問題・エラーメッセージ
$this->Auth->allow(['display', 'view', 'index']);
の行でエラーになっています。
Call to undefined method App\Controller\Component\AuthComponent::allow()
疑問点
AuthComponent::allow がないから呼べないというエラーであることは分かるのですが
https://book.cakephp.org/3.0/ja/controllers/components/authentication.html#
を見る限り、AuthComponentはこちらで実装しなくても
すでにallowの機能があるように思われます。
AuthComponentが読み込めていないのか?
と考え、以下のコード(config)を試したところ
PHP
1// 基本的な設定 2$this->Auth->config('authorize', ['Controller']);
エラー(Call to undefined method App\Controller\Component\AuthComponent::config())にはならなかったため
AuthComponentは読み込めていると考えました。
という事は、
AuthComponentで「allowの機能を使うよ」と定義する必要があるのか?
と考えたのですが、
その方法が分かりませんでした。
allowだけでなくdenyもエラーになります。
AuthComponentの機能を使うために必要な記述などがあれば
教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。