LaravelでのCSRF除外設定について
先日、PHPでLaravelを用いた勉強をしていた際、LINE MessagingAPIを導入した時にwebhookにアクセスが通らないという問題が発生しました。解決まで少し時間がかかったので、備忘録として記事を書いておきます。
問題の発生
LINE MessagingAPIを導入する際、POST通信を行うためにCSRFから除外する必要があります。通常、その除外するURLを設定するファイルは app/Http/Middleware/VerifyCsrfToken.php
の中に記述します。しかし、このファイルが見当たりませんでした。プロジェクトファイルの作成時にミスったかと思い、手動で作成してみましたが、それでも問題は解決しませんでした。
解決策
シンプルにリサーチ不足でした。Laravel Ver.11では、デフォルトで App\Http\Middleware\VerifyCsrfToken
がなくなるとのことです。そのため、web.php
に直接記述する方法を取りました。以下の通りです。
use Illuminate\Foundation\Http\Middleware\ValidateCsrfToken;
Route::post('/webhook', [LineBotController::class, 'webhook'])
->withoutMiddleware(ValidateCsrfToken::class);
あれ?VerifyCsrfTokenじゃないじゃん!と思うかもしれませんが、これは一貫性のために名称が変更されたとのことです。