0

我有一个使用 Doctrine 2 作为我的 ORM 的 Zend 2 安装。

目前,我尝试使用教义 2 实现身份验证。

这行得通。

但是现在我想检查用户是否登录 layout.phtml。

我不知道如何从 layout.phtml 访问身份验证服务在此页面(https://github.com/doctrine/DoctrineModule/blob/master/docs/authentication.md)上他们说 $this->identity( )

但这没有用。它每次返回NULL。

模块.config.php

'authentication' => array(
            'orm_default' => array(
                'object_manager' => 'Doctrine\ORM\EntityManager',
                'identity_class' => 'Application\Model\User',
                'identity_property' => 'id',
                'credential_property' => 'password'
            ),
        ),

模块.php

public function getServiceConfig()
{
    return array(
        'factories'=>array(
            'Application\Model\AuthStorage' => function($sm){
                return new \Application\Model\AuthStorage('site');
            },

            'Zend\Authentication\AuthenticationService' => function($serviceManager) {
                return $serviceManager->get('doctrine.authenticationservice.orm_default');
            },
        ),
    );
}
4

1 回答 1

0

如果您使用 md5 加密密码,请尝试将您的密码更改orm_default为:

'orm_default' => array(
    'object_manager' => 'Doctrine\ORM\EntityManager',
    'identity_class' => 'Application\Entity\User',
    'identity_property' => 'username',
    'credential_property' => 'password',
    'credentialCallable' => function ($userObj, $password) {
        return ($userObj->getPassword() === md5($password));
     }
),

如果您不使用 md5 加密,则可以将其调整为您正在使用的内容。

于 2013-07-05T02:05:55.033 回答