2016-06-09 2 views
2

Я разработал приложение laravel 5, и все работает отлично, за исключением того, что я случайно получаю TokenMismatchException в строке 53 VerifyCsrfToken.php. Я не могу понять причину. Это происходит во время входа в систему. Я использовал встроенный признак laravel для реализации аутентификации. Ниже приведен мой метод выхода из системы.Как решить TokenMismatchException в Laravel 5 App

public function getLogout() 
    { 
     Auth::logout(); 
     Session::forget('cart_id'); 
     Session::forget('is_supervisor'); 
     Session::forget('is_manager'); 
     return redirect(property_exists($this, 'redirectAfterLogout') ? $this->redirectAfterLogout : '/'); 
    } 

Каждый раз, когда возникает исключение, я должен перезагрузить страницу и войти в систему еще до того, как это сработает. Ниже приведен пример моей формы входа:

{!! Form::open(array('class' => 'form-horizontal', 'role' => 'form')) !!} 
    <div class="form-group"> 
     {!! Form::label('username', trans('home.username'), array('class' => 'col-sm-3 control-label')) !!} 
      <div class="col-sm-9 col-lg-5"> 
       {!! Form::text('username', null, array('required' => 'required', 'class' => 'form-control input-sm')) !!} 
         </div> 
      </div> 
{!! Form::close() !!} 

Когда я проверяю исходный код страницы, маркер CSRF всегда доступен. Что может быть проблемой. Я использую laravel 5.1. * И SESSION_DRIVER = файл в .env.

Редактировать

// Authentication маршруты ...

Route::get('auth/login', 'Auth\[email protected]'); 
Route::post('auth/login', 'Auth\[email protected]'); 
Route::get('auth/logout', 'Auth\[email protected]'); 
+0

Можете ли вы выяснить, когда возникает эта ошибка? – TheFallen

+0

Эта ошибка возникает при попытке входа в систему. Когда я ввожу имя пользователя и пароль и отправляю, он показывает исключение. Чтобы решить проблему, я должен выполнить перезагрузку страницы, даже не обновляя и не войдя в систему, прежде чем она будет работать. Это происходит случайно не все время. Что действительно может быть проблемой. Я использую хелпер формы для создания моей формы, которая автоматически добавляет токены Cross Site Request Forgery. Что может быть неправильно ??? –

+0

Можете ли вы отредактировать свой пост и добавить декларацию маршрутов для входа? Также, если у вас есть какое-либо промежуточное ПО, которое этот маршрут проходит, добавьте его также. – TheFallen

ответ

0

CSRF защиты (Cross-Site-Request-подлог) спасает вас от нежелательных действий на веб-приложения. Токен генерируется при рендеринге формы и истекает через некоторое время. Если у вас слишком длинная форма, вы получаете TokenMismatchException.

Вы заметили проблему вскоре после перезагрузки страницы (формы)?

Постарайтесь добавить {{ csrf_field() }} к вашей форме и проверить, если это помогает.

+0

Я замечаю проблему, когда пользователь пытается войти в систему @mikes. Когда пользователь вводит имя пользователя и пароль и выбирает логин, исключение происходит. Это происходит не все время. Иногда это работает отлично, в других случаях исключение возникает. '{!! Форма :: open() !!} 'автоматически добавляет токен –

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