php - 为什么 laravel 5.8 不能在专用网络上使用数据库会话驱动程序登录?
问题描述
设置:
- 私有网络中负载均衡器后面的多个 laravel 副本
- 副本联系在同一专用网络上拥有数据库的单个主服务器
- 副本配置为使用数据库会话驱动程序
- Master 具有适当的会话表,创建时使用:
php artisan session:table
- Cloudflare 在负载均衡器前面使用 https,所有其他(包括负载均衡器本身)都是 http
当我尝试登录时,我可以看到会话表中正在创建条目(尽管 IP 列是来自专用网络的 10.0.0.0/24 负载均衡器),XXX_session
还在浏览器中创建了一个 cookie,但用户永远不会登录并返回登录。
如果我改用 cookie 驱动程序,则不会发生这种情况。
这个问题和答案.env
听起来很有希望,因为它提到了编辑会话配置,但遗憾的是laravel 5.8 直接从.
问题:怎么回事,是不是因为 laravel 将私有 IP 而不是真实用户 IP 写入数据库?如果是这种情况,我该如何强制它写入我从 cloudflare 获得的真实用户 IP?
编辑:
2019 年 10 月 7 日:将 IP 更改为我在数据库中的外部 IP 不会让我登录,即使我绕过负载均衡器也是如此。
解决方案
感谢laracasts 的 mlewis,这个问题已经解决了:
一种可能性是,如果您已将 users 表上的 id 记录更改为 uuids(字符串)而不是 int,那么您需要更改会话表迁移以反映在 user_id 列上。前几天自己遇到了这个。
如果您的 users 表的 id 列为uuid()
,则 session 表列user_id
也必须是uuid()
。
推荐阅读
- python - Pyhook 在尝试将窗口名称解释为 ASCII 时崩溃
- javascript - 选中复选框时启用按钮
- yaml - 有条件地管理 Helm 图表依赖项,而不将子图表保留在“图表”目录中
- unit-testing - 为什么 unitest for sharpdx 在 Jenkins 上失败,但在本地失败,我该如何解决?
- javascript - 具有多个条目和 .css 的 Webpack 4
- powershell - 如何在不生成 PSScriptAnalyzer 警告的情况下创建区分大小写的 Hashtable?
- ruby-on-rails - 站点地图未在 ruby on rails sitemap_generator 中更新
- php - Laravel 侦察员搜索关系
- javascript - 我应该如何从我的价值 JSON 文件中提取一些信息?
- bloc - 如何在 Flutter Web 中控制浏览器刷新