doctrine-orm - 使用 Doctrine 2 MongoDbODM 模块进行身份验证

标签 doctrine-orm zend-framework2 doctrine-odm

我正在尝试使用 Zend2 和 DoctrineODMModule 设置登录(身份验证),但出现错误。 enter image description here

我已按照教程在 github 上使用 doctorineODMModule 设置 Zend2 的身份验证

有什么建议我做错了吗?或者我必须做什么?

最佳答案

我是通过以下方式完成的。 在学说 mdule.config.php

'authentication'    => array(
    'odm_default'   => array(
    'object_manager'        => 'doctrine.documentmanager.odm_default',
    'identity_class'        => 'Admin\Document\User',
    'identity_property'     => 'username',
    'credential_property'   => 'password',
    ),
),

'odm_driver' => array(
    'class' => 'Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver',
    'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Document')
),
'odm_default' => array(
    'drivers' => array(
    __NAMESPACE__ . '\Document' => 'odm_driver'
    )
)

在 Admin/Document/User.php 中创建了两个方法 getUsername 和 getPassword。

public function getUsername(){
    return $this->username;     
}

public function getPassword(){
    return $this->password;
}

在 index controller.php 中创建 Controller

public function loginAction(){
    $this->layout('layout/login-layout.phtml');
    $login_error=false;
    $loginForm = new LoginForm();
    if ($this->request->isPost())
    {
        $loginForm->setData($this->request->getPost());
        if ($loginForm->isValid())
        {
           // try {
            //  throw new \Exception("My exception");

            $data = $loginForm->getData();
            $authService = $this->getServiceLocator()
            ->get('doctrine.authenticationservice.odm_default');

            $adapter = $authService->getAdapter();
            $adapter->setIdentityValue($data['username']);  // i am using username
            $adapter->setCredentialValue(md5($data['password']));
            $authResult = $authService->authenticate();
            if ($authResult->isValid()) {
                $this->redirect()->toRoute('admin_index'); // or last viewed page
            }
            /*} catch (Exception $e) {
                echo "Caught exception $e\n";
                echo $e->getPrevious();
                $login_error=false;
                return new ViewModel(array(
                        'loginForm' => $loginForm,
                        'login_error' => $login_error,
                ));
                //exit;
            }/
            return array(
                    'loginForm' => $loginForm,
                    'errors' => 'username or password is not valid',
            );

            $this->redirect()->toRoute('admin_index');
        }  else {
        //
        // LOG Event ( login|password not valide )
        //
        //Zend\Debug\Debug::dump("not valid data");
        //Zend\Debug\Debug::dump($loginForm->getMessages());
            $login_error=true;
        }//* */
        }
    }
    //
    return new ViewModel(array(
            'loginForm' => $loginForm,
            'login_error' => $login_error,
    ));
}

关于doctrine-orm - 使用 Doctrine 2 MongoDbODM 模块进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18657815/

相关文章:

mongodb - 为什么在实际查询只需要几毫秒时获取 MongoDB 结果却很慢?

symfony - 如何用symfony和ismy来存储历史数据?

symfony - 如何访问一对一的嵌入式表单symfony2

php - Zend Framework 2 模块的正确或首选目录结构是什么?

validation - 将自定义消息添加到 Zend Framework 2 回调验证器

php - 如何在mongodb查询生成器中 "group by"字段 "count"?

php - Doctrine DBAL - SELECT 连接两个表,在结果的键中带有前缀

php - symfony doctrine 将一个实体对象移动到另一个实体类型

model-view-controller - Zend Framework 2 : Modify details of layout. Controller 中的 pthml

php - 在 MongoDB 文档中嵌入许多字符串?