Laravel:错误“页面由于不活动而过期”(419未知状态)

问题描述 投票:4回答:3

我在Laravel 5.6.39上得到了错误The page has expired due to inactivity. Please refresh and try again.。在Chrome“网络标签”中说错误login - 419 unknown status

刷新页面后,我立即收到错误消息。所以我再也看不到登录视图,然后我就被卡住了。考虑没有经验且只尝试刷新页面的普通用户。如果它不起作用,他们会离开你的应用程序。

我可以按照以下步骤重现错误:

  • 转到登录视图
  • 输入用户名和密码,不要选中“记住我”标志
  • 等待该会话到期(出于测试目的,我将SESSION_LIFETIME设置为1分钟)
  • 点击登录按钮,我收到了这个错误

我已经阅读并尝试了最常见的原因:

  • @csrf出现在登录表单中(这是Laravel的默认身份验证)
  • 文件夹storage755但尝试与775777
  • 试图推出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

我真的没有想法解决这个问题。有些帮助吗?谢谢

php laravel session laravel-5 csrf
3个回答
1
投票

当我们更新我们的应用程序时,浏览器可能仍然使用旧文件。如果您不清除缓存,则旧文件可以在您申请时访问问题。

在表单中添加@csrf之后清除浏览器缓存,现在希望这可能有效


0
投票

好吧,我遇到了同样的问题,到目前为止我所知道的,这是一个与会话相关的问题。什么对我有用(在尝试了这么多不同的解决方案后):

SESSION_DRIVER=cookieSESSION_DOMAIN=null就是这样

在我花了几个小时试图找出解决方案之后。

N.B:这个问题有多种解决方案取决于您的具体情况/设置。所以我的解决方案就是其中之一。


-1
投票

看起来你有缓存问题。按照我写的顺序尝试以下步骤;

  1. 确保表格标签在您的表单中开始后立即出现@csrf,如下所示:
<form method="POST" action="/profile">
    @csrf
  1. 运行以下命令: php工匠观点:清楚 php artisan route:清楚 php artisan cache:清楚 php artisan配置:清除 composer dump-autoload
  2. 立即在隐身浏览器窗口中查看应用。

如果它有效,请欢呼。

现在您可能认为它无效,因为您无法要求您的应用用户在隐身窗口中访问该应用。那么,标准Web应用程序流程的工作原理如下:

  • 我们通常有三台服务器 开发 分期 生产

我们在开发服务器上开发并获取所有这些错误,只有在我们解决了所有这些问题后,我们才将其推送到登台服务器,然后我们在那里进行测试。只有在暂存后才解决,然后我们将最终代码推送到生产服务器。

因此,在生产服务器上使用app的用户不需要做任何事情。

如果您在一台服务器上执行所有这些操作,您可能会考虑正确地执行此操作以避免这种情况。说得通?

我希望它有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.