【问题标题】:Laravel 5 url.intended broken when session driver is set to cookie当会话驱动程序设置为 cookie 时,Laravel 5 url.intended 损坏
【发布时间】:2016-03-06 21:26:29
【问题描述】:

我们的 Laravel 5.1 应用程序一直在使用“本机”会话驱动设置(在 .env 文件中配置)。通过这种方式设置,我们能够使用 laravel url.intended 行为将用户重定向到他们在通过身份验证之前尝试访问的 url。

我们不得不将其更改为“cookie”,因为每次我们使用 Amazon 的 Opsworks 系统部署新构建时,用户都会因为他们的服务器端会话文件不再可用而被注销。一旦我们将其更改为 cookie,即使我们部署了修补程序或新版本,用户仍然保持登录状态。

但是,如果将其设置为 cookie,则 url.intended 根本不起作用。我尝试通过添加自定义 url 预期节点来组合一些解决方案,但它不起作用。似乎当用户在登录之前尝试访问 url 时,它会设置会话信息,但随后应用程序会将用户重定向到登录页面,在那里它被取消。

我正在使用 Debugbar 查看会话变量,我快疯了。我已经秃了,所以我没有更多的头发可以拔了。

有人有什么想法吗?

【问题讨论】:

  • laracasts.com/discuss/channels/laravel/… 也有类似的问题,问题是他的自定义中间件。你有为此定制的中间件吗?
  • 我认为最好的选择是使用 redis 或 memcached 作为会话驱动程序。这样即使服务器发生变化,它也会保持不变
  • 谢谢@BrynnBateman。我已经审查了那个,据我所知,我们没有使用自定义中间件。当我升级到 Laravel 5.1 时,我遵循了他们的指示,我们所做的唯一更改是添加 ONE 中间件功能,但这是针对管理员用户的,这不是我们遇到问题的地方。否则,我所做的只是根据 Laravel 说明将路由中的“之前”更改为“中间件”。
  • @amirbar 我从未使用过 Redis 或 Memcached。如果我将其更改为其中之一,是否会引起问题?我需要安装 Redis 还是 Memcached?
  • 是的,您必须将它们安装在服务器上,对于我的多服务器站点,我有 1 台服务器用于会话,所有服务器都连接到该服务器,而不是用户所在的服务器将永远拥有同一个会话

标签: session redirect session-cookies laravel-5.1


【解决方案1】:

我们首先建立了一个 Dynamo 数据库,然后在公共服务器上转换到 Redis。我们有一个负载平衡器,不希望会话因切换服务器而丢失或损坏,因此所有缓存现在都存储在该公共位置。

【讨论】:

    猜你喜欢
    • 2017-06-02
    • 2015-08-18
    • 2013-06-08
    • 2021-12-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    相关资源
    最近更新 更多