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


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

Форма HTML

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

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

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

Боже мой, мне не хватает очень маленькой вещи. Но не уверен, что это является. Есть какая-нибудь помощь?

Обновление

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

Author: Sougata Bose, 2017-09-10

14 answers

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


Если у вас установлен драйвер сеанса в файл:

Может иметь какое-то отношение к тому, что путь к хранилищу недоступен для записи. Здесь хранятся данные сеанса, касающиеся токенов, если вы используете сеансы на основе файлов. Это можно проверить с помощью is_writable(config('session.files'))


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

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

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


Проверить config/sessions.php

Наконец, проблема, с которой я только что столкнулся, у нас был проект, в котором есть домен сеанса и безопасный настройки в config/session.php но сайт разработки не использовал HTTPS (SSL/TLS). Это вызвало эту общую ошибку, так как по умолчанию для sessions.secure было установлено значение true.

 117
Author: Devon, 2018-08-24 12:05:41

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

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

 {{ csrf_field() }}

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

 protected $except = [
        'your/route'
    ];
 62
Author: Hyder B., 2017-09-17 07:55:20

Попробуйте все из них.

composer dump-autoload
php artisan optimize
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear
 7
Author: Sagar Chamling, 2017-09-10 14:39:04

Это произошло из-за Illuminate\Session\TokenMismatchException посмотрите на этот пример кода, как правильно с ним обращаться:

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

 5
Author: yuklia, 2017-11-06 13:01:16

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

 3
Author: Suresh Velusamy, 2017-09-10 14:30:43

Мое дело было решено с помощью SESSION_DOMAIN, на моей локальной машине должно было быть установлено значение xxx.localhost. Это вызывало конфликты с производством SESSION_DOMAIN, xxx.com это было установлено непосредственно в session.php конфигурационный файл.

 3
Author: Andrés Ruiz, 2018-06-07 04:26:55

Для тех, у кого все еще есть проблемы и ничего не помогло. Обратите внимание на параметр php.ini mbstring.func_overload. Он должен быть установлен на 0. И mbstring.internal_encoding установлен в UTF-8. В моем случае это было проблемой.

 2
Author: andrew_jackson, 2018-05-13 19:35:59

Я изменил разрешение на хранение, и ошибка исчезла. Похоже, проблема заключалась в отсутствии разрешения.

sudo chmod -R 775 storage/
 1
Author: Buddhi Kasun, 2018-02-22 15:48:49

У меня было приложение с несколькими поддоменами, и файл cookie сеанса был проблемой между ними. Очистка файлов cookie решила мою проблему.

Также попробуйте установить SESSION_DOMAIN в файле .env. Используйте точный поддомен, который вы просматриваете.

 0
Author: Mladen Janjetovic, 2018-01-05 14:59:15

В моем случае сайт был в порядке на сервере, но не на локальном. Потом я вспомнил, что работал над защищенным сайтом.
Итак, в файле config.session.php, установите для переменной secure значение false

'secure' => env('SESSION_SECURE_COOKIE', false),
 0
Author: Irfandi D. Vendy, 2018-01-17 08:16:12

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

 0
Author: mim.ms, 2018-04-25 13:27:55

Набор mbstring.func_overload = 2

Это помогло мне

 0
Author: Toxi Gen, 2018-06-28 10:12:48

Я нашел два решения, чтобы избежать этих ошибок 1) добавив защищенный $except = ['/yourroute'], можно отключить проверку токенов csrf из определенного корня. 2) просто прокомментируйте \App\Http\Промежуточное ПО\VerifyCsrfToken::строка класса в группе защищенного промежуточного ПО в ядре

 0
Author: Damitha Dayananda, 2018-07-04 03:32:57

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

FileName.blade.php в laravel
FileName.erb.rb в Рубин и рельсы

И добавьте любой

  1. {{ csrf_token() }}
  2. <input type="hidden" name="_token" value="{{ csrf_token() }}" >
  3. <meta name="csrf-token" content="{{ csrf_token() }}">
 -9
Author: alx, 2018-07-24 06:59:42