Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Symfony2在登录时替换PHPSESSID?_Php_Http_Symfony - Fatal编程技术网

为什么Symfony2在登录时替换PHPSESSID?

为什么Symfony2在登录时替换PHPSESSID?,php,http,symfony,Php,Http,Symfony,我的Symfony2应用程序在我登录时会替换我的PHPSESSIDcookie。这是预期的行为吗?这对我来说毫无意义。。。为什么不保持相同的PHPSESSID 这里有更多的细节 要登录到我的应用程序,我必须首先请求访问我的应用程序的URL: $ telnet myapp 80 GET / HTTP/1.1 Host: myapp 我被重定向到另一个URL(/login),并得到一个PHPSESSIDcookie。好的然后我将POST发送到/login\u check类似于\u username

我的Symfony2应用程序在我登录时会替换我的
PHPSESSID
cookie。这是预期的行为吗?这对我来说毫无意义。。。为什么不保持相同的
PHPSESSID

这里有更多的细节

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

$ telnet myapp 80
GET / HTTP/1.1
Host: myapp
我被重定向到另一个URL(
/login
),并得到一个
PHPSESSID
cookie。好的然后我将
POST
发送到
/login\u check
类似于
\u username=blah&\u password=blah
,无论我是否提供了正确的凭据,我都会收到一个不同的
phpsid
cookie

似乎大多数东西都能满足第一个请求,但我必须提出一些请求(我不能只是
发布
/code>到
/login\u检查
并登录)。这是预期的行为吗

不确定这是否重要,但我用的是FOSUserBundle

我想我应该提到的是,在我将应用程序放在负载平衡器后面的两个Web服务器上,并告诉负载平衡器使用基于
PHPSESSID
的粘性之前,这些都不重要。正如您所想象的,如果一个客户端恰好跳转到另一个Web服务器,则替换行为会阻止登录工作


可能重复:

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

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


这也可能与语言环境支持有关,这里是我的问题:

您能详细说明一下吗?有什么更好的选择?会话固定(cookie劫持?)在我们的环境中可能是不相关的,因为负载平衡器只接受HTTPS通信(它解密然后为Web服务器重新加密)。除非一个PHPSESSID在一个查询字符串上结束。等等什么?你想让我比维基页面更详细吗?是的,人们总是误解浏览器(从另一个邪恶的域接受你的域的cookie,被骗从其他站点向你的域发布表单,单击url中具有“怪异”值的链接。相信我:你真的想采取一些预防措施来防止它。但是:如果你坚持使用会话cookie作为标识符,你总是可以生成一个id你自己最终会在同一台服务器上,并将其提供给
session\u id
。好吧,伙计,放松点。:)这是一个有用的wiki页面,谢谢!以下是我想到的详细说明:(1)看看负载平衡器是否可以进行不同的配置,(2)负载平衡器(Amazon Elastic load balancer)提供了一个[session]cookie的粘性,这似乎很好。哦,没有冒犯或有意冒犯,对不起,如果我被认为是直截了当的。我只是假设loadbalancer能够使用(和大多数loadbalancer:生成)另一个cookie是一个给定的问题,而不是一个问题,wiki页面确实声明HTTPS没有什么帮助:P很高兴它能工作!