Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
Session Symfony 2.1中的会话_Session_Symfony - Fatal编程技术网

Session Symfony 2.1中的会话

Session Symfony 2.1中的会话,session,symfony,Session,Symfony,我对Symfony 2.1中针对Symfony内部站点(在一个控制器中)的会话有问题。 我将会话设置为: $this->get("session") ->set('UserMongoId', $this->get('security.context')->getToken()->getUser()->getId()); 之后,在Symfony 2.1之外的另一个文件(在Symfony的web文件夹中)中,我会这样做 这: 但是我收到了空的,我不知道如何使

我对Symfony 2.1中针对Symfony内部站点(在一个控制器中)的会话有问题。 我将会话设置为:

 $this->get("session")
 ->set('UserMongoId', $this->get('security.context')->getToken()->getUser()->getId());
之后,在Symfony 2.1之外的另一个文件(在Symfony的web文件夹中)中,我会这样做 这:

但是我收到了空的,我不知道如何使它工作,有什么想法吗


现在,我尝试使用MongoDbSessionHandler将会话存储在db中,并使用mongo创建一个新的$session变量。显然,它的值将为空。您需要在第二个块中通过某种方式检索$session来分配它

尝试替换

$session = new \Symfony\Component\HttpFoundation\Session\Session();
$session->start();


因为需要获取使用Request::createFromGlobals();;创建的会话对象;,而且不是新的。

我得到了它,用mongo将会话存储在db中:

1.-service.yml

parameters:
    mongo.session.options:
        database: quorra_session
        collection: session
services:
    mongo.connection:
        class: MongoDoctrine\MongoDB\Connection
        factory_service: doctrine.odm.mongodb.document_manager
        factory_method: getConnection
        calls:
           - [initialize, []]
    mongo:
        class: Mongo
        factory_service: mongo.connection
        factory_method: getMongo

    session.handler.mongo:
          class: Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler
          arguments: [@mongo, %mongo.session.options%]
2.-confing.yml添加:

  framework:
        session:
            handler_id: session.handler.mongo
3.-之后,如果我们要使用direferents服务器,doctrinemongo db with MongoDbSessionHandler将自动将所有会话保存在db perfect中。将是这样的:

{ "_id" : ObjectId("50e60da9893ad520a11a7fd7"), "sess_data" : BinData(2,"pAMAAF9zZjJfYXR0cmlidXRlc3xhOjM6e3M6MTI6ImFjY2Vzc190b2tlbiI7czo1MDoiMTYzNDQzODUtYW52OVF6WmFQVDF0bHJ1ejk5OWdlU0w4U2Q1THdMQUxUSnA2V1lFaE0iO3M6MTk6ImFjY2Vzc190b2tlbl9zZWNyZXQiO3M6NDI6IlB4MDg1SWFEWktaUFBucHQ0UkRNbDRtV29VdGtQeFc0YkF4dmZzdkI2NCI7czoxNDoiX3NlY3VyaXR5X21haW4iO3M6NjMxOiJDOjY0OiJGT1NcVHdpdHRlckJ1bmRsZVxTZWN1cml0eVxBdXRoZW50aWNhdGlvblxUb2tlblxUd2l0dGVyVXNlclRva2VuIjo1NTM6e2E6Mjp7aTowO047aToxO3M6NTI4OiJhOjQ6e2k6MDtDOjMxOiJRdW9ycmFcQ29yZUJ1bmRsZVxEb2N1bWVudFxVc2VyIjoxODU6e2E6Mjp7aTowO047aToxO3M6MTYwOiJhOjk6e2k6MDtzOjA6IiI7aToxO3M6MzE6ImpkZWRyYnY4bmxzMDRvYzh3d2M0c29zb2MwazhzZzAiO2k6MjtzOjY6ImZhbmp1bCI7aTozO3M6NjoiZmFuanVsIjtpOjQ7YjowO2k6NTtiOjA7aTo2O047aTo3O2I6MTtpOjg7czoyNDoiNTBlNjBkYTlkNGMzOGVlOWMyMDAwMDAwIjt9Ijt9fWk6MTtiOjE7aToyO2E6Mjp7aTowO086NDE6IlN5bWZvbnlcQ29tcG9uZW50XFNlY3VyaXR5XENvcmVcUm9sZVxSb2xlIjoxOntzOjQ3OiIAU3ltZm9ueVxDb21wb25lbnRcU2VjdXJpdHlcQ29yZVxSb2xlXFJvbGUAcm9sZSI7czoxMjoiUk9MRV9UV0lUVEVSIjt9aToxO086NDE6IlN5bWZvbnlcQ29tcG9uZW50XFNlY3VyaXR5XENvcmVcUm9sZVxSb2xlIjoxOntzOjQ3OiIAU3ltZm9ueVxDb21wb25lbnRcU2VjdXJpdHlcQ29yZVxSb2xlXFJvbGUAcm9sZSI7czo5OiJST0xFX1VTRVIiO319aTozO2E6MDp7fX0iO319Ijt9X3NmMl9mbGFzaGVzfGE6MDp7fV9zZjJfbWV0YXxhOjM6e3M6MToidSI7aToxMzU3MjU0MTU0O3M6MToiYyI7aToxMzU3MjUzOTgzO3M6MToibCI7czoxOiIwIjt9"), "sess_id" : "f9a98866cd99a33d61204413b68d6ca5", "sess_time" : { "t" : 1357254155000, "i" : 3 } }
4.-在symfony 2.1之外的一个文件中(我现在在web中有该文件,用于不加载组件)

变量数据拥有该用户的所有会话

5.-现在,下一步是向最后一个文件发送access_token_secret,并在$data=$mongoSession->read($_COOKIE[“PHPSESSID”])的结果中检查它


对我来说很有效,我正在等待你的评论

看起来你在shell脚本中创建了一个全新的会话。您希望它从哪里获取会话id?好的,没有会话启动,但我仍然可以看到任何东西。关键是使用symony2和session_start();var_dump($_SESSION)我现在可以用symfony 2.1看到变量了,什么都没有……我现在更了解这个问题了。Symfony 2.1使用了一个新的会话接口:这正是问题所在。你知道我该怎么修理吗?我试图用mongo将会话存储在db中,然后只获取会话(如果用户在会话中),但symfony 2.1中暂时稳定的任何捆绑包检查此网站,但对meDo不起作用您的意思是以某种方式发送会话?这不是我使用cookie的方式,没有会话。。。或者你怎么说?谢谢:)
  framework:
        session:
            handler_id: session.handler.mongo
{ "_id" : ObjectId("50e60da9893ad520a11a7fd7"), "sess_data" : BinData(2,"pAMAAF9zZjJfYXR0cmlidXRlc3xhOjM6e3M6MTI6ImFjY2Vzc190b2tlbiI7czo1MDoiMTYzNDQzODUtYW52OVF6WmFQVDF0bHJ1ejk5OWdlU0w4U2Q1THdMQUxUSnA2V1lFaE0iO3M6MTk6ImFjY2Vzc190b2tlbl9zZWNyZXQiO3M6NDI6IlB4MDg1SWFEWktaUFBucHQ0UkRNbDRtV29VdGtQeFc0YkF4dmZzdkI2NCI7czoxNDoiX3NlY3VyaXR5X21haW4iO3M6NjMxOiJDOjY0OiJGT1NcVHdpdHRlckJ1bmRsZVxTZWN1cml0eVxBdXRoZW50aWNhdGlvblxUb2tlblxUd2l0dGVyVXNlclRva2VuIjo1NTM6e2E6Mjp7aTowO047aToxO3M6NTI4OiJhOjQ6e2k6MDtDOjMxOiJRdW9ycmFcQ29yZUJ1bmRsZVxEb2N1bWVudFxVc2VyIjoxODU6e2E6Mjp7aTowO047aToxO3M6MTYwOiJhOjk6e2k6MDtzOjA6IiI7aToxO3M6MzE6ImpkZWRyYnY4bmxzMDRvYzh3d2M0c29zb2MwazhzZzAiO2k6MjtzOjY6ImZhbmp1bCI7aTozO3M6NjoiZmFuanVsIjtpOjQ7YjowO2k6NTtiOjA7aTo2O047aTo3O2I6MTtpOjg7czoyNDoiNTBlNjBkYTlkNGMzOGVlOWMyMDAwMDAwIjt9Ijt9fWk6MTtiOjE7aToyO2E6Mjp7aTowO086NDE6IlN5bWZvbnlcQ29tcG9uZW50XFNlY3VyaXR5XENvcmVcUm9sZVxSb2xlIjoxOntzOjQ3OiIAU3ltZm9ueVxDb21wb25lbnRcU2VjdXJpdHlcQ29yZVxSb2xlXFJvbGUAcm9sZSI7czoxMjoiUk9MRV9UV0lUVEVSIjt9aToxO086NDE6IlN5bWZvbnlcQ29tcG9uZW50XFNlY3VyaXR5XENvcmVcUm9sZVxSb2xlIjoxOntzOjQ3OiIAU3ltZm9ueVxDb21wb25lbnRcU2VjdXJpdHlcQ29yZVxSb2xlXFJvbGUAcm9sZSI7czo5OiJST0xFX1VTRVIiO319aTozO2E6MDp7fX0iO319Ijt9X3NmMl9mbGFzaGVzfGE6MDp7fV9zZjJfbWV0YXxhOjM6e3M6MToidSI7aToxMzU3MjU0MTU0O3M6MToiYyI7aToxMzU3MjUzOTgzO3M6MToibCI7czoxOiIwIjt9"), "sess_id" : "f9a98866cd99a33d61204413b68d6ca5", "sess_time" : { "t" : 1357254155000, "i" : 3 } }
use Symfony\Component\ClassLoader\ApcClassLoader;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\Security\Core\SecurityContext;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\MongoDbSessionHandler;

$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
require_once __DIR__.'/../app/AppKernel.php';

//$kernel = new AppKernel('prod', false);
$kernel = new AppKernel('dev', true);
$kernel->loadClassCache();

$mongo = new Mongo();

$options["database"] = "quorra_session";
$options["collection"] = "session";

$mongoSession = new MongoDbSessionHandler($mongo,$options);
$data = $mongoSession->read($_COOKIE["PHPSESSID"]);