Zend framework Zend_验证多个凭据?

Zend framework Zend_验证多个凭据?,zend-framework,zend-auth,Zend Framework,Zend Auth,登入表格: $authAdapter = Zend_Registry::get('authAdapter'); $authAdapter ->setIdentity($formData['email']) ->setCredential($password) ->setCredential(1); 引导: protected function _initAuth(){ $this->bootstrap('db');

登入表格:

    $authAdapter    = Zend_Registry::get('authAdapter');
    $authAdapter
  ->setIdentity($formData['email'])
  ->setCredential($password)
  ->setCredential(1);
引导:

    protected function _initAuth(){
    $this->bootstrap('db');
    $this->bootstrap('session');

    $db             = $this->getPluginResource('db')->getDbAdapter();
    $auth           = Zend_Auth::getInstance();
    $authAdapter    = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', 'enabled');

    Zend_Registry::set('authAdapter', $authAdapter);
    return $authAdapter;
}
显然,由于添加了“enabled”,其停止工作,如果我删除:

->setCredential(1);
并从此处“启用”:

($db, 'User', 'email', 'password', 'enabled');
它工作得很好

我只想让拥有已启用帐户的用户登录

编辑:

        $authAdapter    = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', '(?) AND `enabled` = 1');

工作原理:)

您需要修改适配器,如下所示:

$authAdapter = new Zend_Auth_Adapter_DbTable(
    $db,
    'user',
    'email',
    'password',
    'MD5(?) AND `enabled` = "true"');
请尝试:

$authAdapter    = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', 'AND enabled      > 1');
并删除:

->setCredential(1);

您可以在身份验证适配器中设置其他条件,例如:

$select = $authAdapter->getDbSelect();
$select->where("isActive = ?","Active");

这不管用。事实上,我将“1”改为“和jimmy=blah”,并启用了
,它仍然登录,这让我相信它忽略了最后一个字段!参见第一篇文章:它是:$authAdapter=new Zend_Auth_Adapter_DbTable($db,'User','email','password','(?)和
enabled
=1');这个怎么样:$authAdapter=new Zend_Auth_Adapter_DbTable($db,'User','email','password');然后$select=$authAdapter->getDbSelect()$选择->其中('enabled=1')$authAdapter->authenticate();您使用的是哪个ZF版本?这个问题的解决方案不是有点老套吗?