2016-11-11 2 views
1

Я страдаю этим TokenMismatchException. Поэтому я понял, что вызывает ошибку. Я узнал, что если я попытаюсь простоять целевую страницу на 15 минут, то войдите в систему. Я получил исключение TokenMismatchException. У меня есть {!! csrf_field() !!} в форме ввода.Laravel: Как предотвратить исключение TokenMismatchException при простоях?

Время жизни config/session.php равно 15 минутам. Поэтому я ждал 15 минут, чтобы поймать ошибку TokenMismatchException.

Так что я попробовал эти несколько решений

  1. установлен Laravel-кофеин
  2. <meta name="csrf-token" content="{{ csrf_token() }}" />
  3. редактировал handler.php

    public function render($request, Exception $e) { if ($e instanceof TokenMismatchException) { return redirect('/login')->with('message', 'Security token expired. Please, login back.'); } if ($e instanceof \Illuminate\Session\TokenMismatchException) { return redirect('/login')->with('message', 'Security token expired. Please, login back.'); } return parent::render($request, $e); }

Но ничто не кажется, работает ,

+1

Для этого вам не нужен laravel-caffeine. Скорее всего, ваш ловушка исключения корректен, просто неправильное пространство имен или оно находится не в том месте – Kenyon

+0

@ Kenyon, проверьте мой код, я пробовал использовать 2 исключения. Все еще не работает. –

+0

Я скопировал ответ здесь http://stackoverflow.com/a/31846916/7146565 –

ответ

0

Вы были на правильном пути. Вы можете редактировать App\Exceptions\Handler как этот

public function render($request, Exception $e) 
{ 

    if($this->isTokenMismatchException($e)) { 

     if(!(Auth::check())) return $this->redirectGuestToLogin(); 

    } 

    return parent::render($request, $e); 
} 

protected function redirectGuestToLogin(){ 

    return redirect()->guest('auth/login'); 

} 

protected function isTokenMismatchException(Exception $e){ 

     return $e instanceof TokenMismatchException; 

} 
+0

У меня все еще есть ошибка. –

+0

Знаете ли вы, вызван ли обработчик и обнаруживает ли это событие TokenMismatchException? – Wistar

+0

Я действительно не знаю. –

0

Мой код в обработчике был прав. Но моя ошибка в том, что я использовал более старую версию проекта в браузере. Вот почему я все еще получаю ошибку. Теперь он полностью работает.

+0

Я не понял ошибку, связанную с использованием старой версии проекта в браузере. Не могли бы вы объяснить это более подробно? – Pathros

+0

Фактический проект должен быть «http: // localhost/myrcf-version-3», и я все время запускал «http: // localhost/myrcf /». –

Смежные вопросы