在laravel项目中,表单正常操作时无异常,页面打开后长时间未操作,再次提交表单时,页面显示 “419 | Page Expired”错误。解决方式如下:
<?phpnamespace App\Exceptions;use Exception;use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;use Illuminate\Session\TokenMismatchException;class Handler extends ExceptionHandler{ /** * A list of the exception types that are not reported. * * @var array */ protected $dontReport = [ // InvalidRequestException::class, ]; /** * A list of the inputs that are never flashed for validation exceptions. * * @var array */ protected $dontFlash = [ 'password', 'password_confirmation', ]; /** * Report or log an exception. * * @param \Exception $exception * @return void */ public function report(Exception $exception) { parent::report($exception); } /** * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request * @param \Exception $exception * @return \Illuminate\Http\Response */ public function render($request, Exception $exception) {// return parent::render($request, $exception); if (!$request->ajax() && ($exception instanceof TokenMismatchException)) { return redirect() ->back() ->withErrors('页面已过期 ,请刷新再试') // 错误提示信息 ->withInput($request->input()); // 可选 } return parent::render($request, $exception); }}