【发布时间】: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