- ミドルウェアを使用する方法:
Laravelのミドルウェアを使用すると、CSRFトークン検証を除外したいURIに対して特定のミドルウェアを作成できます。例えば、
VerifyCsrfToken
ミドルウェアを拡張し、除外したいURIを指定します。
// app/Http/Middleware/CustomCsrfMiddleware.php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class CustomCsrfMiddleware extends BaseVerifier
{
protected $except = [
'uri-to-exclude',
'another-uri-to-exclude',
];
}
そして、App\Http\Kernel
クラスの$middleware
配列にカスタムミドルウェアを追加します。
// app/Http/Kernel.php
protected $middleware = [
// 他のミドルウェア
\App\Http\Middleware\CustomCsrfMiddleware::class,
];
- ルートミドルウェアを使用する方法:
Laravelでは、ルート単位でミドルウェアを指定することもできます。ルートファイル(通常は
routes/web.php
またはroutes/api.php
)でルートを定義する際に、except
メソッドを使用して特定のURIを除外します。
// routes/web.php
Route::post('/uri-to-include', 'Controller@method')->name('include-route');
Route::middleware('csrf')->except([
'uri-to-exclude',
'another-uri-to-exclude',
])->group(function () {
// CSRFトークン検証を行うルート
// ...
});
- ルートミドルウェアを使用してミドルウェアクラスを直接指定する方法: ルートミドルウェアを使用する代わりに、ルート定義内で直接ミドルウェアクラスを指定することもできます。
// routes/web.php
Route::post('/uri-to-include', 'Controller@method')->name('include-route');
Route::post('uri-to-exclude', 'Controller@method')->withoutMiddleware([\App\Http\Middleware\VerifyCsrfToken::class]);
Route::post('another-uri-to-exclude', 'Controller@method')->withoutMiddleware([\App\Http\Middleware\VerifyCsrfToken::class]);
// CSRFトークン検証を行うルート
// ...
上記の方法のいずれかを使うことで、特定のURIに対してCSRFトークン検証を除外することができます。必要に応じて、uri-to-exclude
とanother-uri-to-exclude
の部分を実際のURIに置き換えてください。