IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Acl & Zend_Auth PHP Discussion :

Exemple authentification avec ZF


Sujet :

Zend_Acl & Zend_Auth PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2006
    Messages : 106
    Par défaut Exemple authentification avec ZF
    Salut à tous!
    Je suis debutant dans la programmtion avec ZF. j ai donc telechargé la derniere version et maintenant j aimerais creer un formulaire login avec authentification LDAP.
    Auriez une example complet pour dummies? :-)
    Merci d avance

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut
    Bonjour,

    Je suis également débutant avec le framework Zend,
    J'ai également commencé avec cette version 1.9,
    J'ai voulu faire un exemple d'identification mais le tutorial que j'ai trouvé ne me permet pas de faire fonctionner l'ensemble,

    j'ai utilisé : ftp://ftp-developpez.com/r-benyacoub.../Zend_Auth.pdf

    Cependant quand je teste ça me met qu'il ne trouve pas l'adaptateur DB table

    Est ce que je peux vous donner des informations supplémentaires pour que vous m'indiquiez des pistes pour que ça marche ou bien y'a t'il un tutorial plus récent qui aborde zend auth et qui sera sur de fonctionner,

    Cordialement,

  3. #3
    darthmower
    Invité(e)
    Par défaut
    Bonjour,

    Tu dois utiliser un moyen à Zend de s'authentifier, si tu veux utiliser une base de donnée, tu dois passer comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
    				$authAdapter->setTableName('users')
    							->setIdentityColumn('pseudonym')
    							->setCredentialColumn('password')
    							->setCredentialTreatment('MD5(?) AND isvalid = 1')
    							->setIdentity($pseudonym)
    							->setCredential($password);
     
    				$auth = $authAdapter->authenticate();
    ?>
    Sachant que $pseudonym et $password sont les deux variables récupérée par un formulaire de connexion. $auth est une instance de Zend_Auth_Result, qui permet de tester avec isValid() si la personne existe bel et bien. setCredentialTreatment() n'est pas obligatoire c'est si tu veux rajouter des clauses mysql.

    Gripsou

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut
    Merci beaucoup pour ce petit coup de pouce qui m'a permis d'avancer,

    Cependant après quelques ajustements pour que ça fonctionne, j'ai encore un souci avec le stockage d'infos et le getStorage,

    Voici l'erreur que cela m'affiche et dont je n'arrive pas à me dépêtrer après avoir parcouru différents forums et la doc officielle zend,

    "Notice: Undefined property: IndexController::$_auth in C:\ ... \application\controllers\IndexController.php on line 58

    Fatal error: Call to a member function getStorage() on a non-object in C:\ ... \application\controllers\IndexController.php on line 58

    Et voici le code de la fonction qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    public function loginAction()
        {
            $this->view->message = '';
    		if ($this->_request->isPost()) {
    			// collect the data from the user
    			Zend_Loader::loadClass('Zend_Filter_StripTags');
    			$f = new Zend_Filter_StripTags();
    			$username = $f->filter($this->_request->getPost('username'));
    			$password = $f->filter($this->_request->getPost('password'));
    			if (empty($username)) {
    				$this->view->message = 'Please provide a username.';
    			} else {
    				// setup Zend_Auth adapter for a database table
    				Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
    				//$dbAdapter = Zend_Registry::get('dbAdapter');
    				
    				$authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
    				$authAdapter->setTableName('player')
    							->setIdentityColumn('emailPlayer')
    							->setCredentialColumn('passwordPlayer')
    							->setCredentialTreatment('statePlayer = \'activated\'')
    							->setIdentity($username)
    							->setCredential($password);
    				
    				$result = $authAdapter->authenticate();
    
    				$auth = Zend_Auth::getInstance();
    
    				if ($result->isValid()) {
    					// success: store database row to auth's storage
    					// system. (Not the password though!)
    					
    					$storage = $this->_auth->getStorage();
    					$storage->write($adapter->getResultRowObject(array('emailPlayer')));
    					// stocke l'identité comme objet dans lequel la colonne password
    					// a été omis
    					$storage->write($adapter->getResultRowObject(null, 'passwordPlayer'));
    					
    					
    					
    					
    					$this->_redirect('/');
    				} else {
    					// failure: clear database row from session
    					$this->view->message = 'Login failed.';
    				}
    			}
    		}
    		$this->view->title = "Identification";
    		$this->render();
        }
    Je suppose que c'est une erreur de débutant mais si vous pouviez me donner une piste ça m'aiderait bien...

    Bonne journée à tous,

  5. #5
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    bonjour,

    Citation Envoyé par jvlaurent Voir le message
    "Notice: Undefined property: IndexController::$_auth in C:\ ... \application\controllers\IndexController.php on line 58
    ce message d'erreur t'indique que la classe IndexController n'a pas de propriété _auth. Tu ne peux donc pas faire "$storage = $this->_auth->getStorage();" puisque $this->_auth ne correspond à rien...

    Remplaces-le par "$storage = $auth->getStorage();" et ça ira déjà mieux ($auth est une variable locale à ta méthode loginAction définie deux lignes plus haut)

Discussions similaires

  1. prob d'authentification avec Java Script !!!!!
    Par King_T dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/05/2006, 19h18
  2. Réponses: 2
    Dernier message: 10/05/2006, 07h50
  3. Pas de fenètre d'authentification avec .htaccess
    Par damjal dans le forum Apache
    Réponses: 2
    Dernier message: 02/11/2005, 08h40
  4. [MySQL] mécanisme d'authentification avec BD
    Par lalyly dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/10/2005, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo