2014-10-28 35 views
0

我有一个问题,在我的账户表中删除标志列在那里。所以,如果我删除一个用户,它将设置为1.我可以创建具有相同邮件ID的新用户。当时这个代码失败了,有两个记录具有相同的邮件ID。有没有办法给删除标志也像电子邮件。 我module.config.php:Zf2 + Doctrine 2身份验证适配器限制为提取删除标志等于真行

'doctrine' => array(
    'driver' => array(
     __NAMESPACE__ . '_driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity') 
     ), 
     'orm_default' => array(
      'drivers' => array(
       __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver' 
      ) 
     ) 
    ), 
    'authentication' => array(
     'orm_default' => array(
      'object_manager' => 'Doctrine\ORM\EntityManager', 
      'identity_class' => 'Authentication\Entity\Account', 
      'identity_property' => 'email', 
      'credential_property' => 'password', 
      'credential_callable' => function(Account $account, $passwordGiven) { 
       $userPassword = new UserPassword(); 

       $res = $userPassword->verify($account->getPassword(), $passwordGiven); 

       return $res && !$account->getDeleteFlag() && $account->getStatus(); 
      }, 
     ), 
    )   
) 
+0

那么,任何成功? – fkupper 2014-11-04 17:22:39

回答

0

我不知道,如果这个工程上ZF2,我目前正在ZF1的工作,但我有一种同样的问题。

解决方案是编写一个自定义Auth适配器。该课程实施Zend_Auth_Adapter_Interface并需要authenticate方法。

我在执行的authenticate我已经包括了标志用户名密码自定义验证。

所以,当我要检查的用户:

$authAdapter = new MyAuthAdapter(); 
// I need only to set these values since the flag is always considered 
// to be false so the user can authenticate 
$authAdapter->setCredential($password) 
      ->setIdentity($username); 
      //->setDeleteFlag($yourFlag) you could also implement this 
Zend_Auth::getInstance()->authenticate($authAdapter)->isValid(); 

希望它能帮助,因为它是在ZF1。