Masalah Umum Laravel CSRF Token 419 Page Expired

2024-10-06 21:49:20 +0700 WIB

Dulu jaman SMK waktu belajar awal Laravel nemu masalah paling umum yaitu laman kadaluarsa, hal ini terjadi ketika mengirimkan form dengan method POST tanpa directive @csrf,

Solusi simpel adalah tinggal tambah directive @csrf di dalam tag <form> atau membuat input khusus dengan nama token seperti berikut

<input name="_token" type="hidden" value="{{ @csrf_token() }}">

Hanya saja masalah ini berlanjut, ketika form di tinggal lama dalam waktu tertentu membuat token tersebut kadaluarsa. Umumnya ini akan menjadi masalah kepada user pengguna aplikasi karena halaman yang tidak umum muncul (page error 419).

Entah alasannya kenapa Laravel punya phobia khusus untuk csrf, karena umumnya ini tidak terinclude dalam framework lain.

Tapi berikut adalah dua metode untuk menyelesaikan masalah tersebut.

Metode 1. Tag meta untuk refresh browser ketika session sudah Timeout

Dengan menambahkan potongan kode berikut di tag header,

<meta http-equiv="refresh" content="{{ config('session.lifetime') * 60 }}">

Metode 2. Kostum Laman Error Page 419

kurang lebih dengan potongan berikut, dan simpan ke dalam folder resources/views/errors dan buat file dengan nama 419.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Redirecting ... </title>
</head>
<body>
  <p>Laman telah kadaluarsa, melakukan refresh dalam 3 detik. Jika tidak terjadi perubahan klik <a href="{{ url('/') }}">link ini.</a></p>
</body>

<script>
  setTimeout(() => {
    window.location = `{{ url('/') }}`;
  }, 3000);
</script>
</html>

Tidak harus memilih untuk menggunakan salah satu metode 1 atau 2, kedua metode ini dapat di aplikasikan bersamaan seperti yang saya lakukan.

Refrensi:

Keyword:

  • Kenapa Muncul Halaman 419 Page Expired Pada Laravel
  • Fix error Page Expired Http code 419
Tags: laravel ยท programming