Zend_Auth multiple credentials?
Login Form:
$authAdapter = Zend_Registry::get('authAdapter');
$authAdapter
->setIdentity($formData['email'])
->setCredential($password)
->setCredential(1);
Bootstrap:
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;
}
Obvio开发者_如何学JAVAusly since adding 'enabled' its stopped working, if I remove:
->setCredential(1);
and 'enabled' from there:
($db, 'User', 'email', 'password', 'enabled');
it works just fine...
I would like to only enable users who have an enabled account to login though.
EDIT:
$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', '(?) AND `enabled` = 1');
works :)
You need to modify your adapter like so:
$authAdapter = new Zend_Auth_Adapter_DbTable(
$db,
'user',
'email',
'password',
'MD5(?) AND `enabled` = "true"');
please try:
$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'User', 'email', 'password', 'AND enabled > 1');
and remove:
->setCredential(1);
You can set additional conditions in the auth adapter i.e.
$select = $authAdapter->getDbSelect();
$select->where("isActive = ?","Active");
精彩评论