【发布时间】:2017-08-03 19:24:47
【问题描述】:
所以标题基本上说明了一切,我使用的是 Laravel 5.4、PHP 7.1,并且在我的本地机器上会话工作得很好。基本上当我每次尝试登录或重新加载页面时,我都会收到一个破坏一切的新 CSRF 令牌。我使用数据库作为我的会话驱动程序,它在我提出的每个请求中都会在数据库中创建一个新条目。当我第一次升级时,这发生在我的本地机器上,但要修复它,解决方案是更新我的 cookie_domain 环境变量,然后我让它工作了。但是,在我的新服务器上,我尝试了所有我能想到的域,但仍然无法正常工作。
这是我所知道的,
会话 cookie 未保存在 Chrome -> 应用程序 -> Cookies 下,这确实显示在我的本地设置中。
CSRF-TOKEN 在每次页面重新加载时都会获得一个新值,但 XSRF-TOKEN cookie 存在并在每次重新加载时保持其值。
本地服务器和我的新服务器都运行完全相同的 git 分支,并且都运行 apache 2.4、Laravel 5.4 和 PHP 7.1,所以这让我认为这是某种配置问题。本地和服务器都运行centos 7
每个请求都会在数据库中创建一个新会话,这发生在 get、post 和 ajax 请求中。
我认为这是某个地方的配置问题,但我不知道,任何帮助将不胜感激。如果有帮助,请在我的初始页面加载的响应标题下查看 sid 和 laravel 会话都存在于“Set-Cookie”命令下,但实际上都没有保存到本地应用程序 cookie 存储中。
编辑/更新 所以最初我回答了我自己的问题,说我认为是修复,但是这个修复不再有效,我到处都是这个问题。所以更新我的问题和以前一样,尝试做任何事情都会创建一个新会话,重新加载和导航几个页面会由于 ajax 请求和其他此类活动而添加数十个会话。
我现在的设置是这样的,我有 3 台服务器,这三台服务器都运行克隆映像,这意味着它们是相同的,但是其中一台是子域 development.mysite.com,另外两台是负载平衡的主站点 mysite.com。所以我能想出的唯一可能的解释是,由于我的子域,laravel 无法理解我的设置。我已经在 .env 文件(development.mysite.com、.mysite.com、mysite.com、.development.mysite.com 等)中尝试了所有可能的 COOKIE_DOMAIN 组合,并且我已经向我的主机添加了几十个选项,全部都没有利用。关于这可能是什么的任何想法?
**编辑/更新#2 ** 除此之外,我发现它可能与我使用的域有关,它是一个子域,其中主域也在运行 laravel,如果是这样,我将不得不弄清楚如何以及为什么。
【问题讨论】:
-
我遇到了同样的问题,我认为这个问题只发生在本地,当您更改浏览器时它就会出现。
-
你解决了这个问题吗?
标签: laravel session cookies laravel-5 session-cookies