Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Acl & Zend_Auth
Zend_Acl & Zend_Auth Forum d'entraide pour les composants Zend_Acl & Zend_Auth du Zend Framework (contrôle d'accès, gestion des droits, authentification, etc.). Avant de poster -> Cours Zend_Acl et Zend_Auth.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/05/2007, 15h36   #1
Membre régulier
 
Avatar de jacquesh
 
Développeur informatique
Inscription : 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
Points : 82
Points : 82
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 :
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 :
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.
__________________
Citation:
En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche.
jacquesh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2007, 20h05   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Tiens, j'avais prévu de le traduire/essayer aussi, ce tutoriel de Rob... Je vais essayer de m'y mettre ce weekend
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 10h13   #3
Membre régulier
 
Avatar de jacquesh
 
Développeur informatique
Inscription : 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
Points : 82
Points : 82
sinon aucune idée de ce que provoquer cette erreur ??
__________________
Citation:
En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche.
jacquesh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 10h46   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Ton code a l'air correct. As-tu essayé avec un autre SGBD ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 15h51   #5
Membre régulier
 
Avatar de jacquesh
 
Développeur informatique
Inscription : 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
Points : 82
Points : 82
après avoir fouillé dans les sources !!

le problème vient dans la composition du where

voila requete générée

Code :
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...])
__________________
Citation:
En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche.
jacquesh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 16h41   #6
Membre régulier
 
Avatar de jacquesh
 
Développeur informatique
Inscription : 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
Points : 82
Points : 82
p'tit patch fait maison

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

Code :
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 !!

__________________
Citation:
En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche.
jacquesh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 16h54   #7
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Ok ^^

As-tu rapporté ce bug à la DevZone ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2007, 17h01   #8
Membre régulier
 
Avatar de jacquesh
 
Développeur informatique
Inscription : 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
Points : 82
Points : 82
J'utilise ZF depuis Lundi - j'ai pas encore fait le tour de la communauté ...

J'vé faire un tour sur devzone pour voir ca !!

par contre j'trouve pas de BugReport pour Zend ; kel @ ??
__________________
Citation:
En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche.
jacquesh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h02.


 
 
 
 
Partenaires

Hébergement Web