Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'aimerais me mettre en place une authentification grâce à zend_auth et zend_db
mais je me heurte à cet message "Message: No entry is registered for key 'dbAdapter' "
Controller
Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
$dbAdapter = Zend_Registry::get('dbAdapter');
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
$authAdapter->setTableName('membres');
$authAdapter->setIdentityColumn('email');
$authAdapter->setCredentialColumn('password');Dans mon bootstrap
$config = new Zend_Config_Ini('./application/config.ini', 'production');
$registry = Zend_Registry::getInstance();
$registry->set('config', $config);
$db = Zend_Db::factory($config->db);
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('dbAdapter', $db);L'adaptateur n'existe pas dans le registre ? Comprend pas ??????
Dernière modification par h2h2 (03-10-2009 01:36:02)
Hors ligne
Bonjour, pour ma part j'utilise le code suivant dans l'action en question:
public function loginAction()
{
//redirect when user is authenticated
if(Zend_Auth::getInstance()->hasIdentity()){ //singleton class, not wasting resources.
$this->_redirect('index/index');
}
$request = $this->getRequest();
$form = new Form_LoginForm();
if($request->isPost()){
if($form->isValid($this->_request->getPost())){
$authAdapter = $this->getAuthAdapter();
$user_name= $form->getValue('user_name');
$password = $form->getValue('password');;
$authAdapter ->setIdentity($user_name)
->setCredential($password);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if($result->isValid()){
$identity = $authAdapter->getResultRowObject();
$authStorage = $auth ->getStorage();
$authStorage->write($identity);
$this->_redirect('index/index');
}else{
$this->view->errorMessage = "User name or password is invalid.";
}
}
}
$this->view->form = $form;
}et
private function getAuthAdapter(){
$authAdapter = new Zend_Auth_Adapter_DBTable(Zend_Db_Table::getDefaultAdapter());
$authAdapter ->setTableName('user')
->setIdentityColumn('user_name')
->setCredentialColumn('password');
return $authAdapter;
}À considérer: mon adapteur en est un par défaut, je l'ai mis dans le fichier .ini:
resources.db.adapter = PDO_MYSQL resources.db.params.host = localhost resources.db.params.username = root resources.db.params.password = "" resources.db.params.dbname = nom_de_la_bd
Hors ligne
Bonjour , merci de m'avoir répondu,
J'ai modifier cette ligne
zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
$dbAdapter = Zend_Registry::get('dbAdapter');
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);par la tienne
$authAdapter = new Zend_Auth_Adapter_DBTable(Zend_Db_Table::getDefaultAdapter());
Problème résolu
Hors ligne