TokenMismatchException を検知 → 元のURLへリダイレクト → フラッシュメッセージで通知
app/Exceptions/Handler.php
use Illuminate\Session\TokenMismatchException;
public function register(): void
{
$this->renderable(function (TokenMismatchException $e, $request) {
return redirect()
->back()
->withInput($request->except('_token', 'password'))
->with('csrf_expired', true);
});
}
レイアウトファイル(resources/views/layouts/app.blade.php など)
@if (session('csrf_expired'))
<div class="alert alert-warning">
セッションが切れたため、ページを自動更新しました。もう一度操作してください。
</div>
@endif
withInput() で入力値を保持できる(パスワード系は除外推奨)redirect()->back() でGETリクエストとして元のページに戻るため、トークンが新しく発行されるback() ではなく特定ページに飛ばしたい場合は redirect()->route('login') 等に変えるだけです。