Postingan lainnya
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
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>
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
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();
});
iya siap master.. makasih buanyag ya..sory merevotkan and kepo.. semoga ilmunya berkah dunia akherat ya..aamiin