«Срок действия страницы истек из-за бездействия» – Laravel 5.5

Моя страница регистрации правильно показывает форму с помощью CsrfToken ( {{ csrf_field() }} ), присутствующей в форме).

Форма HTML

 <form class="form-horizontal registration-form" novalidate method="POST" action="{{ route('register') }}"> {{ csrf_field() }} .... </form> 

Я использую встроенную аутентификацию для пользователей. Ничего не изменил, кроме маршрутов и перенаправлений.

Когда я отправляю форму (сразу после перезагрузки), она дает, что страница истекло из-за неактивности. Обновите и повторите попытку. ошибка.

Мое, я скучаю по очень маленькой вещи. Но не уверен, что это такое. Любая помощь?

Обновить

Нашел вопрос. Драйвер сеанса был настроен на массив. Изменен файл, и ошибка исчезла. Но что не так, если я использую массив?

Может иметь какое-то отношение к тому, что storage_path не доступен для записи. Здесь хранятся данные сеанса относительно токенов, если вы используете сеансы на основе файлов.


Как указано в комментариях, драйвер сеанса был настроен на массив. Массив предназначен только для тестирования. Поскольку данные не сохраняются, он не сможет сравнить токен при следующем запросе.

Драйвер массива используется во время тестирования и предотвращает сохранение сохраненных в сеансе данных.

https://laravel.com/docs/5.5/session#configuration


Если вы придете к этому ответу непосредственно из поиска, убедитесь, что вы уже добавили токен csrf в свою форму с {{ csrf_field() }} как OP.

Я столкнулся с тем же вопросом в Laravel 5.5. В моем случае это произошло после изменения маршрута с GET на POST. Проблема была в том, что я забыл передать токен CSRF, когда я переключился на POST.

Вы можете опубликовать токен CSRF в своей форме, вызвав:

  {{ csrf_field() }} 

Или исключить свой маршрут в приложении / Http / Middleware / VerifyCsrfToken.php

  protected $except = [ 'your/route' ]; 

Попробуйте все.

 composer dump-autoload php artisan optimize php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear 

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

Это вызвано тем, что Illuminate\Session\TokenMismatchException просмотрите этот пример кода, как правильно его обрабатывать:

https://gist.github.com/jrmadsen67/bd0f9ad0ef1ed6bb594e

Убедитесь, что на вашем веб-сервере правильное системное время. В моем случае бродячая машина была в будущем (26 января 14:08:26 UTC 2226), поэтому, конечно, время в cookie сессии моего браузера истекло около 200 лет назад 😉

У вас должен быть тип файла

FileName.blade.php в laravel
FileName.erb.rb в Ruby и Rails

и добавить любой
1) {{csrf_token ()}}
2) <input type="hidden" name="_token" value="{{ csrf_token() }}" >
3) <meta name="csrf-token" content="{{ csrf_token() }}">