Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Utilisateur de ZF depuis peu, je rencontre un problème pour lequel je seche.
J'ai epluche la doc, mais j'y arrive vraiment pas.
C'est juste un truc bateau de mise en place d'une authentification, mais malgre les exemples existants sur le net, rien y fait.
J'ai donc essaye deux solutions.
Dans la 1ere, j'initialise dans ma page loginController.php mes variables de login et de mots de passe comme suit :
/* 1ere solution avec [u]ZEND_AUTH[/u] */ $authAdapter = new Zend_Auth_Adapter_DbTable(Database::getDbConnection()); $authAdapter->setTableName('fe_users') ->setIdentityColumn('username') ->setCredentialColumn('password'); // Set the input credential values (e.g., from a login form) $authAdapter->setIdentity($formData['username']) ->setCredential(md5($formData['password'])); // Perform the authentication query, saving the result $auth = Zend_Auth::getInstance(); $result = $auth->authenticate($authAdapter); if($result->isValid()) { print 'authenticated-'; $data = $authAdapter->getResultRowObject(null, 'password'); $auth->getStorage()->write($data); (...)
et dans une autre page controller LogoutController.php
$auth = Zend_Auth::getInstance(); $username = $auth->getIdentity(); print_r($username);
Mais voila, rien n'y fait, je ne recupere rien sur mon deuxieme controller.
-----------------------------------------------------------------------------------------------------------------------------
Ma deuxieme solution consiste a utiliser les variables de sessions :
De nouveau sur LoginController.php :
/* 2eme solution avec [u]ZEND_SESSION[/u] */ if($result->isValid()) { if(Zend_Session::isStarted()) { print 'session started-'; $defaultNamespace = new Zend_Session_Namespace('Default'); $defaultNamespace->username = $formData['username']; if(Zend_Session::namespaceIsset('Default')) { print 'namespace started-'; } else print 'namespace not started-'; } else print 'not started'; } else print 'not authenticated-';
Et comme output, j'ai bien
authenticated
session started
namespace started
Et maintenant en revenant sur le LogoutController.php :
if(Zend_Session::isStarted()) { print 'session started-'; } else print 'session not started-'; if(Zend_Session::namespaceIsset('Default')) { print 'namespace started-'; print_r(Zend_Debug::dump($_SESSION['Default']['username'])); } else{ print 'namespace not started-'; $defaultNamespace = new Zend_Session_Namespace(); print_r(Zend_Debug::dump($defaultNamespace)); print_r(Zend_Debug::dump($defaultNamespace->username)); print_r(Zend_Debug::dump($_SESSION['Default']['username'])); }
J'ai comme output :
session started
namespace not started
object(Zend_Session_Namespace)#23 (1) {
["_namespace:protected"] => string(7) "Default"
}
object(Zend_Session_Namespace)#23 (1) {
["_namespace:protected"] => string(7) "Default"
}
NULL
NULL
NULL
NULL
Voila, si quelqu'un pouvait m'eclairer...
Hors ligne
dans ton 1er exemple :
// username est le nom de tes utilsateurs dans ta bd
$username = $auth->getIdentity()->username;
echo $username;
Dernière modification par baboune (30-11-2008 18:11:17)
Hors ligne
Pages: 1