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版本?这个问题的解决方案不是有点老套吗?