Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Salut à tous!
je viens de debuter en ZF et j ai besoin d' un petit pousse. Je suis à la recherche d un exemple autonome sur l authentification et identification en ZF ( cad en utilisant Zend_auth_adapter_ldap).
Merci d avance
Hors ligne
voilà ce que je fais dans toutes mes action (mutualisé dans une classe)
$this->_auth = $parameters->fast->get('auth', false); if($this->_auth) { $user = Zend_Auth::getInstance()->getIdentity(); if ($user) { $this->view->user = clone($user); if(isset($user->profile)) $this->view->user->profile = clone($user->profile); } }
et dans le bootstrap
$auth = $parameters->fast->get('auth', false); if($auth) { Zend_Loader::loadClass('Zend_Auth'); if (!$config->get($parameters->fast->db)) { Zend_Loader::loadClass('Fast_Exception_Db'); throw new Fast_Exception_Db(Fast_Exception_Db::PARAMETERS_NOT_FOUND); } }
a+JYT
Hors ligne
Dans le fichier .ini de ton application:
; Active directory: first server ldap.server1.host = <host> ldap.server1.useSsl = false ldap.server1.accountDomainName = <domain> ldap.server1.accountDomainNameShort = <domain> ldap.server1.accountCanonicalForm = 3 ldap.server1.baseDn = "CN=Users,DC=blabla,DC=Local" ; Active directory: second server if server1 not responding ldap.server2.host = <host2> ldap.server2.useSsl = false ldap.server2.accountDomainName = <domain> ldap.server2.accountDomainNameShort = <domain> ldap.server2.accountCanonicalForm = 3 ldap.server2.baseDn = "CN=Users,DC=blabla,DC=Local"
Dans le fichier AuthController.php
public function loginAction() { // action body $auth = Zend_Auth::getInstance(); $form = new Form_Login(); $form->submit->setLabel('Login'); $this->view->form = $form; // ****** FORM VALIDATION ****** if ($this->getRequest()->isPost()) { $formData = $this->getRequest()->getPost(); if($form->isValid($formData)) { $login=$form->getvalue('login'); $password=$form->getvalue('password'); $config=Zend_Registry::get('config'); // check that the user exists in the active directory $options_ldap = $config->ldap->toArray(); $adapter = new Zend_Auth_Adapter_Ldap($options_ldap, $login, $password); try { $result = $auth->authenticate($adapter); } catch(Zend_Ldap_Exception $zle) { Zend_Debug::dump($zle->getMessage()); } // ... ACTIVE DIRECTORY // ... CHECK USER EXISTENCE IN USERS TABLE if (!$result->isValid()) { Zend_Debug::dump('Error Ldap'); foreach ($result->getMessages() as $message) { Zend_Debug::dump($message); } //TODO Change flashmessenger? Zend_Auth::getInstance()->clearIdentity(); Zend_Debug::dump('Error Login'); $this->_forward("login"); } else { Zend_Session::regenerateId(); $username = $auth->getIdentity() ; Zend_Debug::dump($username); $this->_redirect("Releasestatus/list"); } } $this->_redirect( 'Auth/login'); } } public function logoutAction() { $auth = Zend_Auth::getInstance(); $auth->clearIdentity(); $this->_redirect( 'Auth/login'); }
Ensuite, la form_login (login.php)
public function __construct($options = null) { parent::__construct($options); $this->setName('Login'); $this->getDecorator('HtmlTag')->setOption('class', 'form medium'); $login = new Zend_Form_Element_Text('login'); $login ->setLabel('Login') ->setRequired(true) ->addFilter('StringToLower') ->addValidator('NotEmpty'); $this->addElement($login); // password $password = new Zend_Form_Element_Password('password'); $password ->setLabel('Password') ->setRequired(true) ->setDescription('Give the Windows password') ->addValidator('NotEmpty'); $this->addElement($password); $submit = new Zend_Form_Element_Submit('submit'); $this->addElement($submit); }
Ensuite, dans les controllers que tu veux contrôler avec un login :
public function preDispatch() { $auth = Zend_Auth::getInstance(); if (!$auth->hasIdentity()) { $this->_redirect('Auth/login'); } }
Dernière modification par gcr01 (28-08-2009 15:49:01)
Hors ligne
oups
Dernière modification par yoann92 (10-07-2012 10:36:12)
Hors ligne
Pages: 1