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 :

[Zend_Auth] - Authenticate problem


Sujet :

Zend_Acl & Zend_Auth PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Par défaut [Zend_Auth] - Authenticate problem
    Bonjour ...

    je tourne en rond sur un problème d'authentification avec ZEND ; j'ai suivi la doc ZEND & la doc sur akrabat.com 'Getting started with Zend_Auth'

    voila mon 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
     
    function loginAction() {		
    		$this->view->message = '';
     
    		// collect data
    		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 = 'Veuillez entrer un nom d\'utilisateur' ;
    		} else {
    			// Setup Zend Adapt.
    			Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable') ;
    			$db = Zend_Registry::get('db') ;
    			$authAdapter = new Zend_Auth_Adapter_DbTable($db) ;
    			$authAdapter->setTableName('users') ;
    			$authAdapter->setIdentityColumn('Login') ;
    			$authAdapter->setCredentialColumn('Password') ;
     
    			$authAdapter->setIdentity($username) ;
    			$authAdapter->setCredential($password) ;
     
    			// auth			
    			$result = $authAdapter->authenticate();
     
    			if ($result->isValid()){
    				$data = $authAdapter->getResultRowObject(null,'password') ;				
    				$auth->getStorage->write($data) ;
    				$this->_redirect('/') ;
    			} else {
    				$this->view->message = 'Login Failed' ;
    			}
    		}
     
    		$this->view->title = "Log in" ;
    		$this->render() ;
    	}
    au moment de la validation de l'autentification ; j'ai le message suivant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ( ! ) Zend_Auth_Adapter_Exception: SQLSTATE[HY000]: General error: 923 OCIStmtExecute: ORA-00923: FROM keyword not found where expected (/var/tmp/portage/dev-lang/php-5.2.1-r3/work/php-5.2.1/ext/pdo_oci/oci_statement.c:142) in /usr/share/php5/Zend/Auth/Adapter/DbTable.php on line 291
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0003	59676	{main}( )	../index.php:0
    2	0.0326	1332036	Zend_Controller_Front->dispatch( )	../index.php:44
    une idée... ??

    merci d'avance.

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Tiens, j'avais prévu de le traduire/essayer aussi, ce tutoriel de Rob... Je vais essayer de m'y mettre ce weekend

  3. #3
    Membre éclairé Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Par défaut
    sinon aucune idée de ce que provoquer cette erreur ??

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Ton code a l'air correct. As-tu essayé avec un autre SGBD ?

  5. #5
    Membre éclairé Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Par défaut
    après avoir fouillé dans les sources !!

    le problème vient dans la composition du where

    voila requete générée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "USERS".*, "PASSWORD" = 'd' AS zend_auth_credential_match FROM "USERS" WHERE ("LOGIN" = 'd')
    une partie du where se trouve avant le FROm GROS BUG !!!


    ya un patch pour ca... moi qui débute dans ZEND... pour un frameworks qui est quasi en final ;; j'aurai espéré quelque chose de moins bizard....

    a part ca (pour le moment ZF c top !! surtout Zend_acl & Zend_Auth[si ca marche...])

  6. #6
    Membre éclairé Avatar de jacquesh
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    269
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 269
    Par défaut
    p'tit patch fait maison

    dans le fichier "/Zend/Auth/Adapter/DbTable.php"

    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
     
    312,314c312,321
    <         $dbSelect->from($this->_tableName, array('*', $credentialExpression))
    <                  ->where($this->_zendDb->quoteIdentifier($this->_identityColumn) . ' = ?', $this->_identity);
    < 
    ---
    >         $dbSelect->from($this->_tableName, array("$this->_identityColumn", "$this->_credentialColumn"))
    >                  ->where($this->_zendDb->quoteIdentifier($this->_identityColumn) . ' = ?', $this->_identity)
    >                  ->where($this->_zendDb->quoteIdentifier($this->_credentialColumn) . ' = ?', $this->_credential) ;
    > 
    >       $rSQL = $dbSelect->__toString() ;      
    >       $rSQL = str_replace('"', '', $rSQL);                 
    >        
    >         
    317c324
    <             $resultIdentities = $this->_zendDb->fetchAll($dbSelect->__toString());
    ---
    >             $resultIdentities = $this->_zendDb->fetchAll($rSQL);
    337c344,346
    < 
    ---
    > //        
    > //        var_dump($resultIdentities[0]) ;
    > //
    339,347c348,356
    < 
    <         if ($resultIdentity['zend_auth_credential_match'] != '1') {
    <             $authResult['code'] = Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
    <             $authResult['messages'][] = 'Supplied credential is invalid.';
    <             return new Zend_Auth_Result($authResult['code'], $authResult['identity'], $authResult['messages']);
    <         }
    < 
    <         unset($resultIdentity['zend_auth_credential_match']);
    <         $this->_resultRow = $resultIdentity;
    ---
    > //
    > //        if ($resultIdentity['ZEND_AUTH_CREDENTIAL_MATCH'] != '1') {
    > //            $authResult['code'] = Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID;
    > //            $authResult['messages'][] = 'Supplied credential is invalid.';
    > //            return new Zend_Auth_Result($authResult['code'], $authResult['identity'], $authResult['messages']);
    > //        }
    > //
    > //        unset($resultIdentity['ZEND_AUTH_CREDENTIAL_MATCH']);
    >               $this->_resultRow = $resultIdentity;
    c surement perfectible....(j'ai fait ca en 2 min. et je ne connais pas bien le ZF) mais ca fonctionne !!


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme IIS <authentication>
    Par shonem dans le forum Débuter
    Réponses: 1
    Dernier message: 03/05/2009, 10h52
  2. Réponses: 0
    Dernier message: 18/12/2008, 15h57
  3. probleme header authenticate
    Par rvm31 dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2008, 18h15
  4. Forms Authentication Problem
    Par soldiertt dans le forum SharePoint
    Réponses: 6
    Dernier message: 06/09/2007, 10h28
  5. debutant probleme Header Authenticate
    Par rvm31 dans le forum Langage
    Réponses: 1
    Dernier message: 15/07/2006, 22h24

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