Перед чтением ниже убедитесь, что у вас есть @csrf
или {{ csrf_field() }}
в вашей форме
нравится
<form method="post">
@csrf <!-- {{ csrf_field() }} -->
... rest of form ...
</form>
Сообщение об ошибке Session Expired или 419 Page Expired в larvel появляется из-за того, что где-то не удается проверить ваш токен csrf, что означает, что App\Http\Middleware\VerifyCsrfToken::class
промежуточное ПО уже включено. В форме @csrf
уже добавлена директива blade, что тоже должно быть хорошо.
Затем другая область для проверки - это сеанс. csrf
Маркер проверка непосредственно связана с вашей сессией, поэтому вы можете проверить , является ли драйвер сеанса работой или нет, например, неправильно настроенного Redis может вызвать проблемы.
Возможно, вы можете попробовать переключить драйвер / программное обеспечение сеанса из .env
файла, поддерживаемые драйверы приведены ниже.
Поддерживаемые драйверы сеансов в Laravel 5, Laravel 6 и Laravel 7 (Doc Link)
file
- сеансы хранятся в хранилище / framework / sessions.
cookie
- сеансы хранятся в безопасных зашифрованных файлах cookie.
database
- сеансы хранятся в реляционной базе данных.
memcached
/ redis
- сеансы хранятся в одном из этих быстрых хранилищ на основе кеша.
array
- сеансы хранятся в массиве PHP и не сохраняются.
Если ваша форма работает после переключения драйвера сеанса, значит, что-то не так с этим конкретным драйвером, попробуйте исправить ошибку оттуда.
Возможные сценарии, подверженные ошибкам
Вероятно, сеансы на основе файлов могут не работать из-за проблем с правами доступа к /storage
каталогу (быстрый поиск в Google даст вам решение), также помните, что установка 777 для каталога никогда не является решением.
В случае с драйвером базы данных ваше соединение с БД может быть неправильным, или sessions
таблица может не существовать или неправильно настроена (неправильная часть конфигурации была подтверждена как проблема в соответствии с комментарием @Junaid Qadir).
redis/memcached
конфигурация неверна или одновременно обрабатывается другим фрагментом кода в системе.
Было бы неплохо выполнить php artisan key:generate
и сгенерировать новый ключ приложения, который, в свою очередь, сбрасывает данные сеанса.
Очистить кеш браузера СЛОЖНО , я обнаружил, что хром и firefox виноваты больше, чем я могу вспомнить.
Подробнее о том, почему важны ключи приложения
return;
можно позвонитьreturn redirect()->back();
. Насколько я могу судить, приложению нечего делать после почтового запроса. Возможно, вы сможете перенаправить его в представление после обработки запроса.