【发布时间】:2018-08-30 00:08:20
【问题描述】:
当我在本地运行项目时,一切正常。但是当我在生产中部署项目时,每次使用 POST 方法提交表单时,我都会收到消息“页面因不活动而过期”。
关于这个问题有很多问题,我已经尝试了所有可能的解决方案:
1- 我的表单包含令牌 {{ csrf_field() }} 2- 我更改了我的应用程序的名称 (APP_NAME)
会话驱动和缓存驱动设置为“文件”。
我听说存储文件可能不可写,这是它存储会话的地方。如果我的项目部署在 GCLoud (Google Cloud Platform) 中,我不知道如何检查。
谢谢
更新 1
我在 Laracast 中发布了我的问题,有人说它无法写入 storage/sessions 文件时会发生这种情况。当我将项目部署到 GCloud 时,我不知道如何使其可被服务器写入。
我的 composer.json 文件现在有这个配置:
"post-install-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php artisan optimize",
"chmod -R 755 bootstrap\/cache"
]
更新 2
现在我将SESSION_DRIVER 更改为cookie,它可以在生产环境中使用。
【问题讨论】:
-
这听起来像是你的 CSRF 实现中的一个错误。尝试关闭 CSRF 看看是否能解决问题。
-
谢谢,但我已经尝试关闭我的 CSRF 保护:
protected $except = [ 'your/route' ];。问题是我想保留它。 -
据我了解,更新 2 您设法解决了您的问题(项目在部署到生产时工作)。您能否在您的问题下发布答案,以便其他来到这里的用户清楚您是如何修复错误的? Answering yourself 在 Stack Overflow 中是完全正确的。
标签: google-app-engine csrf laravel-5.5 gcloud csrf-protection