この投稿の内容は Laravel 5.1 以降のバージョンにおいて利用できます。
Laravel で外部からの Webhook を受けたいときなど、特定のルートだけCSRFトークンのチェックをバイパスする必要性がある場合があります。WebhookプロバイダはCSRFトークンを知るわけがなく、扱えませんから。
本来ならば必要なルートをそもそもVerifyCsrfTokenミドルウェアがかからないように別途定義したほうがいいようなものですが、VerifyCsrfTokenミドルウェアはwebのルート全体にかけるべきでもあるためWebhookのためだけに分けたルーティングを定義するのも面倒なだけ。
デフォルトのVerifyCsrfTokenミドルウェアを利用している場合、それ(app/Http/Middleware/VerifyCsrfToken.php)の
$except
に以下のように除外するルートを追加します。この除外URIは
Request::is
(
Str::is
)に渡されるため、必要に応じて
*
によるワイルドカード指定が可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; class VerifyCsrfToken extends BaseVerifier { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ 'webhook/*', ]; } |
See also
Laravel 5.5 CSRF保護
関連