我在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的默认身份验证)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
我真的没有想法解决这个问题。有些帮助吗?谢谢
当我们更新我们的应用程序时,浏览器可能仍然使用旧文件。如果您不清除缓存,则旧文件可以在您申请时访问问题。
在表单中添加@csrf
之后清除浏览器缓存,现在希望这可能有效
好吧,我遇到了同样的问题,到目前为止我所知道的,这是一个与会话相关的问题。什么对我有用(在尝试了这么多不同的解决方案后):
SESSION_DRIVER=cookie
与SESSION_DOMAIN=null
就是这样
在我花了几个小时试图找出解决方案之后。
N.B:这个问题有多种解决方案取决于您的具体情况/设置。所以我的解决方案就是其中之一。
看起来你有缓存问题。按照我写的顺序尝试以下步骤;
@csrf
,如下所示:<form method="POST" action="/profile"> @csrf
如果它有效,请欢呼。
现在您可能认为它无效,因为您无法要求您的应用用户在隐身窗口中访问该应用。那么,标准Web应用程序流程的工作原理如下:
我们在开发服务器上开发并获取所有这些错误,只有在我们解决了所有这些问题后,我们才将其推送到登台服务器,然后我们在那里进行测试。只有在暂存后才解决,然后我们将最终代码推送到生产服务器。
因此,在生产服务器上使用app的用户不需要做任何事情。
如果您在一台服务器上执行所有这些操作,您可能会考虑正确地执行此操作以避免这种情况。说得通?
我希望它有所帮助。