実現したいこと
CakePHP4はデフォルトでCSRF機能がオンになっているということなのだそうで、その機能をオフにしたいです。
前提
情報をDBに登録するだけのフォームを構築しているのですが、送信するとCSRF機能によりエラーが発生してしまいます。
決まった室内で使用するシステムのためということで、ひとまず機能はオフにしたいです。
発生している問題・エラーメッセージ
送信テストを行うと以下のようなエラーが発生します。
php
1CSRF token from either the request body or request headers did not match or is missing.
ネット上によくある情報からすると、AppController.phpに設定しているソースをコメントアウト、もしくは削除すると良いというお話をよく目にするのですが、そもそもAppController.phpは何も触っておらずそのようなソースを見たことありません。
該当のソースコード
良く見つかる情報
php
1以下の部分をコメントアウト 2// ->add(new CsrfProtectionMiddleware([3// 'httponly' => true,4// ]));
試したこと
まずはAppController.phpにCSRF機能を有効にするソースをいれてみました。
公式ドキュメントより
php
1// src/Application.php2// セッションベースの CSRF トークンの場合3use Cake\Http\Middleware\SessionCsrfProtectionMiddleware;4 5public function middleware(MiddlewareQueue $middlewareQueue): MiddlewareQueue6{7 $options = [8 // ...9 ];10 $csrf = new SessionCsrfProtectionMiddleware($options);11 12 $middlewareQueue->add($csrf);13 return $middlewareQueue;14}
すると、以下のようなエラーが発生します。
php
1Fatal error: Declaration of App\Controller\Admin\AppController::middleware(App\Controller\Admin\MiddlewareQueue $middlewareQueue): App\Controller\Admin\MiddlewareQueue must be compatible with Cake\Controller\Controller::middleware($middleware, array $options = []) in C:\xampp\htdocs\cakephp\src\Controller\Admin\AppController.php on line 99
余計ひどくなりました。
そいうことで手詰まりで解決方法見つからず数日ハマっております。
どなたか解決方法ご教授していただけたら幸いです。
どうぞよろしくお願いします。
0 コメント