Laravel Session 总是在 Laravel 5.4 中更改每次刷新/请求

标签 laravel session cookies laravel-5 session-cookies

所以标题基本上说明了一切,我使用的是 Laravel 5.4、PHP 7.1,并且在我的本地机器上 session 工作得很好。基本上是在每次我获得一个新的 CSRF token 时尝试登录或重新加载页面时,这会破坏一切。我使用数据库作为我的 session 驱动程序,它在我发出的每个请求中都会在数据库中创建一个新条目。当我第一次升级时,这发生在我的本地机器上,但要修复它,解决方案是更新我的 cookie_domain env 变量,我让它工作了。但是,在我的新服务器上,我尝试了我能想到的所有域,但仍然无法正常工作。

这是我所知道的,

  • session cookie 没有保存在 Chrome -> 应用程序 -> Cookies 下,这确实显示在我的本地设置中。
  • CSRF-TOKEN 每次页面重新加载都会获得一个新值,但 XSRF-TOKEN cookie 存在并在每次重新加载时保持其值。
  • 本地服务器和我的新服务器都运行完全相同的 git 分支,并且都运行 apache 2.4、Laravel 5.4 和 PHP 7.1,所以这让我认为这是某种配置问题。本地和服务器都在运行 centos 7
  • 每个请求都会在数据库中创建一个新 session ,这发生在 get、post 和 ajax 请求中。

  • 我认为这是某个地方的配置问题,但我不知道,任何帮助将不胜感激。如果有帮助,请查看我的初始页面加载的响应 header ,sid 和 laravel session 都存在于“Set-Cookie”命令下,但实际上都没有保存到本地应用程序 cookie 存储中。

    编辑/更新
    所以最初我回答了我自己的问题,说我认为是修复,但是这个修复不再有效,我到处都遇到了这个问题。所以更新我的问题和以前一样,尝试做任何事情都会创建一个新的 session ,由于 ajax 请求和其他此类事件,重新加载和导航几个页面会添加数十个 session 。

    我现在的设置是这样的,我有 3 台服务器,所有三台服务器都在运行克隆图像,这意味着它们是相同的,但是其中一台是子域,development.mysite.com,另外两台是主站点 mysite 的负载平衡.com。所以我能想出的唯一可能的解释是,由于我的子域,laravel 无法理解我的设置。我已经尝试了 .env 文件(development.mysite.com、.mysite.com、mysite.com、.development.mysite.com 等)中 COOKIE_DOMAIN 的所有可能组合,并且我向我的主机添加了许多选项,全部都没有有用。关于这可能是什么的任何想法?

    **编辑/更新#2 **
    除此之外,我发现它可能与我使用的域是一个子域有关,其中主域也在运行 laravel,如果是这样,我将不得不弄清楚如何以及为什么。

    最佳答案

    我们也抛出了这个错误,这似乎是解决问题的方法:

    • 检查您的 storage/文件夹有正确的权利

    • 尝试禁用页面中的所有 Javascript(通过导航器禁用或在代码内部禁用)并确保 'http_only' => true,
    • 尝试使用和不使用 https

    • 确保 SESSION_DRIVER 变量不为空

    • 尝试在'encrypt' => false, 之间切换和 'encrypt' => true,
    • 尝试更改cookie 名称'cookie' => 'laravelsession',
    • 尝试将您的 SESSION_DOMAIN 设置为您的实际域或 null

    • 尝试在 'secure' => env('SESSION_SECURE_COOKIE', false) 和 'secure' => env('SESSION_SECURE_COOKIE', true) 之间切换,

    在每一步之后,这个错误似乎都被修复了,但不知何故,直到我们在开发中也使用 https 之前,cookie 仍然没有在导航器中设置。

    很抱歉无法提供 100% 的修复,但遇到完全相同的问题,我想与您分享我的经验。

    关于Laravel Session 总是在 Laravel 5.4 中更改每次刷新/请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42769388/

    相关文章:

    laravel - 如何让 phpunit 在 cloud9 IDE 中工作?

    c# - 分配的字符串 ID 和不同大小写字符的 NHibernate 问题

    javascript - 在 JavaScript 中按名称获取 cookie 的最佳方法是什么?

    javascript - 设置 cookie 无法按预期工作

    Android CookieManager setCookie 创建多个cookie

    php - 如何在 Laravel 4 中自动加载 'libraries'?

    php - 刷新迁移时出现外键约束错误 - Laravel

    php - Laravel 集合在 map 内部递增无法使用箭头功能

    php - 我可以将类实例存储在 $_SESSION 空间中吗?

    node.js - 强制 share.js 使用相同的快速 session 数据