Laravelで419エラーが出た場合の対処方法を解説する。
Laravelで419エラーが出た原因
今回起きたLaravelでの419エラーは、CSRF(クロスサイトリクエストフォージェリ)トークンを使用していない場合に発生したものでした。
CSRF(クロスサイトリクエストフォージェリ)とは
Laravelの419エラー解決方法
結論、CSRFを使用するか、CSRFの仕組みを無効かするか。
CSRFトークンを使用する
@csrfとform要素内に追加するだけ。
<form action="/auth/login" method="post"> <!-- CSRF保護 --> @csrf <div class="form-group"> <input type="text" name="username" value="{{ old('username') }}"> </div> </form>
CSRFの仕組みを無効化する
VerifyCsrfTokenミドルウェアをコメントアウトし、CSRFの仕組みを無効化。
<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { /** * The application's global HTTP middleware stack. * * These middleware are run during every request to your application. * * @var array */ protected $middleware = [ \App\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\TrustProxies::class, ]; /** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, // \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ 'throttle:60,1', 'bindings', ], ]; /** * The application's route middleware. // 以下省略