2016-07-27 32 views
0

我知道我是StackOverflow的初學者,但是我遇到了一個難題。
好吧,在商業上,我在laravel有令牌的麻煩。有時候,一切順利的話,但我有錯誤:
jQuery的2.2.4.min.js:4 POST http://localhost:8000/checkabsence/delete 500(內部服務器錯誤)在使用令牌的情況下,Ajax中的Laravel TokenMismatchException

我的JS: $.ajax({ method:"post", url:postDeleteAbsence, data:{ _token:token, absenceid: absenceid } }).done(function(msg) { alert('deleted'); });

我'100%肯定我正在傳遞令牌和消息。 var token = '{{ Session::token() }}';

我的路線:我的令牌,我認爲設置

Route::post('/checkabsence/delete', [ 
'uses' => '[email protected]', 
'as' => 'postDeleteAbsence', 
'middleware' => 'auth' 
]); 

我的控制器:

public function postDeleteAbsence(Request $request) { 
    //code 
} 

我laravel的版本:5.2.41

在我的上項目我創建了多個Ajax請求,一切運行良好,現在我得到了這個錯誤... 注意t帽子有時我也得到非阿賈克斯post請求令牌不匹配(例如對第五個請求它會引起令牌不匹配錯誤)

我希望你能幫助我,因爲我真的不知道該怎麼做或什麼我做錯了...

//新聞
我注意到,我在我的數據庫中有令牌不同於我在我的ajax請求和其他地方使用的令牌。

路線: routes

+0

嘗試'{{csrf_token()}}',而不是'{{會話令牌::()}}' – jaysingkar

+0

我試過,沒有什麼變化:( – mrforexify

+0

是它喜歡它第一次工作,然後它沒有? – jaysingkar

回答

0

我有同樣的問題,因爲你有。在我的情況下,原因是用戶登錄時的身份驗證。我是用Auth::login($user, true);,而不是使用Auth::login($user);

0

你必須使用AJAX時設置該標記作爲標題。

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': {{ csrf_token() }} 
    } 
}); 

編輯

嘗試添加令牌是這樣的:

$.ajax({ 
    method: 'post', 
    url: postDeleteAbsence, 
    data: { 
     absenceid: absenceid 
    }, 
    headers: { 
     'X-CSRF-TOKEN': '<?php echo csrf_token(); ?>' 
    } 
}).done(function(msg) { 
    alert('deleted'); 
}); 
+0

試過這個解決方案,仍然是同樣的問題 – mrforexify

+0

但你能告訴我這是可以的remember_token數據庫與當前顯示的令牌不同,我登錄了我的控制檯? – mrforexify

+0

@mrforexify * remember_token *與此tiken完全不同,它用於CSRF保護請求,另一個用於用戶登錄會話 – TheFallen

相關問題