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