Laravel: ошибка «Срок действия страницы истек из-за неактивности» (419 неизвестный статус) - PullRequest
0 голосов
/ 31 января 2019

Я получаю ошибку The page has expired due to inactivity. Please refresh and try again. на Laravel 5.6.39.В Chrome «вкладка Сеть» пишет ошибка login - 419 unknown status

Как только я обновляю страницу, я сразу получаю ошибку.Так что я больше не вижу вид входа в систему, тогда я застрял .Подумайте об обычных пользователях, у которых нет опыта, и только попытайтесь обновить страницу.Если это не работает, они покидают ваше приложение.

Я могу воспроизвести ошибку, выполнив следующие действия:

  • перейдите к представлению входа в систему
  • введите имя пользователя и пароль ине устанавливайте флажок «запомнить меня»
  • дождитесь окончания сеанса (для целей теста я установил SESSION_LIFETIME на 1 минуту)
  • нажмите кнопку входа в систему, и я получу эту ошибку

Я уже прочитал и попробовал наиболее распространенные причины:

  • @csrf присутствует в форме входа (это аутентификация по умолчанию Laravel)
  • папка storage имеет 755, но пробовал также с 775 и 777
  • пытался запустить php artisan cache:clear php artisan config:clear php artisan route:clear php artisan view:clear php artisan config:cache php artisan key:generate
  • Я использую значение по умолчанию SESSION_DRIVER=file, но на производстве я также пытался заменить его на SESSION_DRIVER=cookie на SESSION_DOMAIN=https://app.my-domain.com/

Здесь вы найдете мой код (контроллеры, просмотр,маршруты, .env, ...) : https://gist.github.com/dangelion/aa7fc54ea75f7b2d6062fc79f07e04e8

У меня действительно нет больше идей, чтобы решить эту проблему.Некоторые помогают?Спасибо

Ответы [ 3 ]

0 голосов
/ 31 января 2019

Похоже, у вас проблемы с кешем.Попробуйте выполнить следующие шаги в том порядке, в котором я их пишу:

  1. Убедитесь, что @csrf присутствует сразу после того, как тег формы начинается в вашей форме, например:
<form method="POST" action="/profile">
    @csrf

Выполните следующие команды:

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

Проверьте приложение сейчас в окне браузера в режиме инкогнито.

Если это работает, ура.

Теперь вы можете подумать, что это недопустимо, поскольку вы не можете попросить пользователей вашего приложения получить доступ к приложению в окне инкогнито.Вот как работает стандартный процесс веб-приложения:

  • у нас обычно есть три сервера
    1. Dev
    2. Staging
    3. Production

и мы разрабатываем и получаем все эти ошибки на сервере dev, только после того, как мы все это исправим, мы отправим их на промежуточный сервер, а затем протестируем там.Только после того, как все решено при подготовке, мы отправляем окончательный код на рабочий сервер.

Следовательно, пользователю, использующему приложение на рабочем сервере, не нужно ничего делать.

Если вы делаете все это на ОДНОМсервер, вы можете рассмотреть возможность сделать это правильно, чтобы избежать подобных ситуаций.имеет смысл?

Надеюсь, это поможет.

0 голосов
/ 17 апреля 2019

Ну, я столкнулся с той же проблемой, и, насколько я знаю, это проблема, связанная с сеансом.у меня сработало (после того, как я попробовал так много разных решений):

SESSION_DRIVER=cookie с SESSION_DOMAIN=null вот и все

после того, как я потратил почти час, пытаясь найти решение.

Примечание: у этой проблемы есть различные решения, зависящие от вашего конкретного случая / настроек.поэтому мое решение здесь одно из них.

0 голосов
/ 31 января 2019

Когда мы обновляем наше приложение, браузер все еще может использовать старые файлы.Если вы не очистите свой кеш, старые файлы могут получить доступ к проблемам при подаче заявки.

после добавления @csrf в форме Очистить кеш браузера и теперь надеемся, что это может работать

...