【问题标题】:I'm getting the message "The page has expired due to inactivity" in Laravel 5.5我在 Laravel 5.5 中收到消息“由于不活动,页面已过期”
【发布时间】: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


【解决方案1】:

app.yaml 中的SESSION_DRIVER 更改为cookie,例如:

env_variables:
 # Put production environment variables here.
 APP_LOG: errorlog
 APP_DEBUG: false

 SESSION_DRIVER : cookie

【讨论】:

    猜你喜欢
    • 2018-07-22
    • 2018-09-28
    • 2018-03-28
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2018-12-10
    相关资源
    最近更新 更多