27
2010
Zend_Auth et Doctrine
Aujourd’hui, je reviens sur l’authentification. Mais attention, au lieu d’utiliser Zend_DB, je vais utiliser Doctrine et ce, grâce à un adaptateur développé à cet effet.
Pour commencer, Téléchargez la classe correspondante via ce lien. Ensuite, placez la dans votre projet afin d’avoir le chemin suivant : /library/App/Auth/Adapter/Doctrine.php.
Ensuite, en reprenant le tutoriel de Doctrine et celui de l’authentification, nous ne devrions pas avoir de mal pour se connecter avec cette classe.
Pour faire court, voici le script final (j’ai laissé les anciennes lignes en commentaires pour que vous puissiez faire la différence. Entre avant et après :
/application/modules/admin/controller/IndexController.php:
| PHP | | copy code | | ? |
| 01 | public function indexAction() { |
| 02 | $this->view->title="Authentification utilisateur"; |
| 03 | |
| 04 | $form = new Admin_Forms_Identification(); |
| 05 | $this->view->form = $form; |
| 06 | $this->view->message = null; |
| 07 | |
| 08 | if($this->_request->isPost()) |
| 09 | { |
| 10 | //on récupère le login |
| 11 | $username = $this->_request->getPost('login'); |
| 12 | //on récupère le password |
| 13 | $password = $this->_request->getPost('password'); |
| 14 | |
| 15 | |
| 16 | if (empty($username)) |
| 17 | { |
| 18 | $this->view->message = 'Veuillez saisir un identifiant'; |
| 19 | } |
| 20 | else |
| 21 | { |
| 22 | //on récupère la connexion à la base de donnée |
| 23 | //$dbAdapter = Zend_Db_Table::getDefaultAdapter(); |
| 24 | //récupération de la connexion à la BDD via la table Utilisateurs et Doctrine |
| 25 | $dbAdapter = Doctrine::getConnectionByTableName('App_Models_Utilisateurs'); |
| 26 | //récupération de l'adaptateur dbAdapter |
| 27 | //$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); |
| 28 | //récupération de l'adaptateur Doctrine. Nous l'initialisons avec la connexion à la BDD |
| 29 | $authAdapter = new App_Auth_Adapter_Doctrine($dbAdapter); |
| 30 | //on indique le nom de la table |
| 31 | $authAdapter->setTableName('App_Models_Utilisateurs'); |
| 32 | //on indique la colonne du login |
| 33 | $authAdapter->setIdentityColumn('login'); |
| 34 | //on indique la colonne du mot de passe |
| 35 | $authAdapter->setCredentialColumn('passwd'); |
| 36 | //on dit qu les mots de passes sont hashés en MD5 |
| 37 | $authAdapter->setCredentialTreatment('MD5(?)'); |
| 38 | |
| 39 | //ajout des données du formulaire pour l'authentification |
| 40 | $authAdapter->setIdentity($username); |
| 41 | $authAdapter->setCredential($password); |
| 42 | |
| 43 | //lancement de l'authentification |
| 44 | $auth = Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_Session('admin')); |
| 45 | $result = $auth->authenticate($authAdapter); |
| 46 | |
| 47 | Zend_Debug::dump($result); |
| 48 | if ($result->isValid()) |
| 49 | { |
| 50 | |
| 51 | //succès: on stoque dans un objet sessions toutes les infos de la ligne |
| 52 | //de la table sauf le mot de passe pour des raisons de sécurité. |
| 53 | $data = $authAdapter->getResultRowObject(null, 'user_password'); |
| 54 | $auth->getStorage()->write($data); |
| 55 | |
| 56 | |
| 57 | |
| 58 | //on redirige vers notre page admin |
| 59 | $this->_redirect('/admin/accueil'); |
| 60 | } |
| 61 | else |
| 62 | { |
| 63 | //failure: clear database row from session |
| 64 | $this->view->message = "Echec de l'identification"; |
| 65 | } |
| 66 | } |
| 67 | } |
| 68 | } |
Comme vous pouvez le voir, il n’y a pas beaucoup de changement par rapport à avant. En ce qui concerne l’utilisation de la session générée, elle est de la même structure et la déconnexion marche toujours de la même façon.
Voilà, maintenant, vous pouvez supprimer du site-test toutes les allusions à Zend_Db car maintenant, Doctrine domine partout.
Source : ZF Community Framework.
Articles Connexes
1 Commentaire Donnez votre avis
Laisser un commentaire
Catégories
- Actualités (11)
- Android (5)
- Bases de Données (4)
- Développement (1)
- PasteQR (2)
- PHP (8)
- Systèmes et Réseau (5)
- Technologies Web (5)
- Tests (2)
- Zend Framework (30)
Commentaires récents
- (@Fritte7) (@Fritte7) dans PasteQR passe en 1.1.0
- roux dans ZendX Jquery Dialog
- Fritte7 dans Gérer des évènements dans une listview.
- Fierfeu dans Introduction à Zend Framework 2.0
- Christophe B. dans Gérer des évènements dans une listview.
Mots-Clefs
Active Directory AJAX Android Apache2 APC Bootstrap Chrome Configuration CSS Eclipse Firefox Google html HTTP Installation Internet Internet Exporer Java Javascript JQuery JQuery UI Linux Mémoire Mac MySQL Navigateur Opera PDO Pear Phing PHP Safari SGBD SMTP SQL Ubuntu View Helper Windows Server XML Zend Cache Zend DB Zend Form Zend Framework ZendX ZF 2.0
WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.

Publié par Throrïn





Le lien du fichier adaptateur ne fonctionne pas.
SVP pourriez-vous le mettre à jour !