4

当我登录时,我的 Symfony2 应用程序替换了我的PHPSESSIDcookie。这是预期的行为吗?这对我来说毫无意义......为什么不保持不变PHPSESSID

这里有更多细节。

要登录我的应用程序,我必须首先向访问我的应用程序的 URL 发出请求:

$ telnet myapp 80
GET / HTTP/1.1
Host: myapp

我被重定向到另一个 URL ( /login) 并获得了一个PHPSESSIDcookie。美好的。然后我POST到类似的/login_check东西_username=blah&_password=blah,无论我是否提供正确的凭据,我都会收到一个不同的PHPSESSIDcookie。

似乎大多数东西都适用于第一个请求,但我必须提出一些POST请求(我不能只是/login_check登录)。这是预期的行为吗?

不确定这是否重要,但我正在使用 FOSUserBundle。

我想我应该提到这些都不重要,直到我将我的应用程序放在负载均衡器后面的两个网络服务器上,并告诉负载均衡器使用基于PHPSESSID. 正如您可能想象的那样,PHPSESSID如果客户端碰巧反弹到另一个 Web 服务器,则替换行为会阻止登录工作。

可能重复:Symfony2:清除 cookie 后首次尝试登录不起作用

4

2 回答 2

8

这是为了防止会话固定。我会建议另一个cookie,然后是会话一个用于负载平衡。

于 2012-06-19T00:08:21.770 回答
1

这可能是一个错误。对于 symfony2.0,如果您尝试从会话中读取某些内容,甚至尝试在未调用 SessionListener 时获取会话标识符,您会注意到新会话是使用另一个 PHPSESSID 启动的。

这也可能与语言环境支持有关,这是我的问题:https ://github.com/symfony/symfony/issues/3662

于 2012-06-20T06:06:14.140 回答