ZF2:身份验证会话出现问题

时间:2013-05-27 15:02:27

标签: php zend-framework2 session-variables

我在身份验证后遇到了一个奇怪的问题。

整个认证部分有效,之后出现了麻烦:

        $result = $this->getAuthService()->authenticate();

            if ($result->isValid()) {
                $storage = $this->getAuthService()->getStorage();
                $storage->write(($this->getAuthService()
                        ->getAdapter()
                        ->getResultRowObject(array(
                                'email_utilisateur',
                                'password_utilisateur',
                            ))));
                $redirect = 'success';                    
            }

现在,我已经登录,并且在“Zend_Auth”键中存储了电子邮件+密码(不要注意我存储密码btw的事实,这是示例^^)。

但是当我进入另一个页面时(即使它是相同的),我的会话密钥“Zend_auth”被破坏,我有一个不完整的PHP对象....

Array
(
     [__ZF] => Array
         (
             [_REQUEST_ACCESS_TIME] => 1369667659.7526
         )

     [Zend_Auth] => __PHP_Incomplete_Class Object
        (
            [__PHP_Incomplete_Class_Name] => Zend\Stdlib\ArrayObject
        )

)

那么,任何想法为什么更改页面会搞砸我的会话变量?

在此先感谢,我花了5个小时来解决这个问题,测试等等......

编辑28/05/2013:

所以,我还是没找到。 无论如何,被破坏的对象是Zend \ Stdlib \ ArrayObject。这个arrayobject被破坏的原因是会话在包含avec Zend \ Stdlib \ ArrayObject之前开始。我会试着弄清楚,但如果这就是原因,那么它就是框架的一个错误。顺便说一下,我正在使用ZF 2.2。

1 个答案:

答案 0 :(得分:2)

我发现了! 因此,如上所述,原因是会话在应用程序已知ArrayObject事物之前启动。而且,你可以在那里阅读:

https://zf2-docs.readthedocs.org/en/latest/modules/zend.session.advanced-usage.html

**Do not enable PHP‘s session.auto_start setting. If you do not have the ability to disable this.**

这就是事情。在我的php.ini中启用了session.auto_start。要解决此问题,必须在php.ini文件中将其设置为0:

php_value session.auto_start 0

如果您的PHP用于多个应用程序/站点,请将此行添加到.htaccess中:

php_value session.auto_start 0

这将覆盖php.ini

的实际值

希望它会帮助某人^^。