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