TokenMismatchException

Malem Masters.. sory kepo maning..

ane nemu error kaya ginih >>

---------------------------------------------------------------------------------------------------------------------- TokenMismatchException in C:\xampp\htdocs\ide\vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php line 68: << ---------------------------------------------------------------------------------------------------------------------- 1. Penyebabnya apa ya ??

2. Solusinya gmn ya ??

tengkiyu somat

avatar junan
@junan

12 Kontribusi 1 Poin

Diperbarui 6 bulan yang lalu

4 Jawaban:

1. Penyebabnya : Pas kamu ngirim request POST (bisa lewat form atau yang lain), di sana nggak ada tokennya, atau tokennya tidak cocok. Sebagai catatan kalau kamu makek sistem auth bawaan Laravel, token ini secara otomatis diperlukan. Kalau kamu mau tau ini teknik security apa, ini namanya teknik CSRF(Cross-Site Request Forgery) Token.

2. Solusinya : Kasih token.

// Contoh nambahin token pakek blade template.
<form method="POST" action="/profile">
    <input type="text" name="username" />
    {{ csrf_field() }}
</form>

avatar dalikewara
@dalikewara

351 Kontribusi 260 Poin

Dipost 7 tahun yang lalu

1. defaultnya kaya gini Master :

{{ csrf_field() }}

2. jadi ginih kronologinya.. ~ user login ~ status user sedang login ~ ane langsung coba logout alhasil logout nya lancar jaya tapi.. ~ pas ane coba login lagi and trus.. ~ ane cuekin tuh tab browser kira2 selama 1 jam -- ~ pas coba logout langsung muncul error kaya di subject problem

bigituh kira2 krono;ogisnya master..mohon pencerahan..

tengkiyu somat

avatar junan
@junan

12 Kontribusi 1 Poin

Dipost 7 tahun yang lalu

Jawaban Terpilih

Owww... okeh. Kalau langsung logout bisa nggak? Mungkin pas dibiarin lama tokennya expired, jadi perlu di generate ulang lagi(refresh halaman). kalau di file `config/session.php`, di sana ada settingan `'lifetime' => 120`, 120 menit, mungkin itu batas waktu expired time default Laravel, coba ganti ke value yang lebih besar.

Cara rekomendasinya yaitu generate ulang tokennya, bisa lewat refresh halaman, atau lewat AJAX. Contoh lewat AJAX:

<script type="text/javascript">
    var csrfToken = $('[name="csrf_token"]').attr('content');

    setInterval(refreshToken, 3600000);

    function refreshToken()
    {
        $.get('/route/untuk/refresh/token').done(function(data)
        {
            csrfToken = data;
        });
    }

    setInterval(refreshToken, 3600000);
</script>

Nanti di routenya tambahin:

Route::get('/route/untuk/refresh/token', function()
{
    return csrf_token();
});

avatar dalikewara
@dalikewara

351 Kontribusi 260 Poin

Dipost 7 tahun yang lalu

iya siap master.. makasih buanyag ya..sory merevotkan and kepo.. semoga ilmunya berkah dunia akherat ya..aamiin

avatar junan
@junan

12 Kontribusi 1 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban