2016-07-27 4 views
0

Я знаю, что я начинаю в StackOverflow, но сталкиваюсь с трудной проблемой.
Хорошо, спустившись к делу У меня проблемы с токеном в ларавеле. Иногда все идет хорошо, но у меня есть ошибка:
Jquery-2.2.4.min.js: 4 POST http://localhost:8000/checkabsence/delete 500 (Внутренняя ошибка сервера)Laravel TokenMismatchException в Ajax при использовании токена

Мои ЯШ: $.ajax({ method:"post", url:postDeleteAbsence, data:{ _token:token, absenceid: absenceid } }).done(function(msg) { alert('deleted'); });

I'am 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 Иногда я получал также несоответствие токена по запросу без аякса (например, на пятом запросе он выдает ошибку несоответствия токенов)

Я надеюсь, что вы мне поможете, потому что я действительно не знаю, что делать или что Я делаю неправильно ...

// Новости
Я заметил, что токен, который у меня есть в моей базе данных, отличается от токена, который я использую в своем запросе ajax и в других местах.

Маршруты: routes

+0

попробовать '{{csrf_token()}}' 'вместо {{Session :: маркер()}}' – jaysingkar

+0

Я пробовал, ничего не меняется :( – mrforexify

+0

это такое, как это работает в первый раз, а потом нет? – jaysingkar

ответ

0

У меня была такая же проблема, как у вас есть. В моем случае причиной была аутентификация во время входа пользователя. Я использовал Auth::login($user, true); вместо использования Auth::login($user);

0

Вы должны установить маркер в качестве заголовка при использовании AJAX.

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

EDIT

Попробуйте добавить токен этот путь:

$.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 * - это совершенно другая вещь из этого тикена. Это для защиты запроса CSRF, а другая для сеанса входа пользователя. – TheFallen