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 :

Erreur ZEND_auth [ZF 1.11]


Sujet :

Zend_Acl & Zend_Auth PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut Erreur ZEND_auth
    Bonjour,
    je viens faire appel à vous car je bloque depuis quelque jours sur ce problème.
    Lorsque je valide mon formulaire de connexion, j'ai cette erreur qui s'affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Catchable fatal error: Argument 1 passed to Zend_Auth::authenticate() must implement interface Zend_Auth_Adapter_Interface, null given, called in /var/www/trinis.fourmi-tek.org/application/controllers/AuthController.php on line 76 and defined in /var/www/trinis.fourmi-tek.org/library/Zend/Auth.php on line 115
    apparemment cela viendrais de l'argument $adapter...
    Mais je ne comprend pas trop pourquoi.

    Voici le code de mon contrôleur :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    <?php
    class AuthController extends Zend_Controller_Action
    {
    	public function getForm()
    	{
    		return new Application_Form_Login(array(
    		'action' => '/auth/process',
    		'method' => 'post',
    		));
    	}
     
    	public function getAuthAdapter(array $params)
    	{
    		$params= new Application_Form_Login;
    		$config = new Zend_Config_Ini(APPLICATION_PATH. '/configs/application.ini', 'production');
     
    		$db = new Zend_Db_Adapter_Pdo_MySql(array(
    		'adapter'=>$config->resources->db->adapter,
    		'host'=>$config->resources->db->params->host,
    		'username'=>$config->resources->db->params->username, 
    		'password'=>$config->resources->db->params->password,
    		'dbname'=> $config->resources->db->params->dbname));
     
    		$adapter = new Zend_Auth_Adapter_DbTable(
    		$db,
    		        	'users',
    		        	'username',
    		        	'password',
    		        	'MD5(CONCAT(?, password_salt))'
    		);
     
    		$adapter->setIdentity($params->getValue('username'));
    		$adapter->setCredential($params->getValue('password'));
    	}
     
     
    	public function preDispatch()
    	{
    		if (Zend_Auth::getInstance()->hasIdentity()) {
    			// Si l’utilisateur est identifié, nous ne souhaitons pas voir le formulaire d’authentification;
    			// cependant, l’action de déconnexion devrait toujours rester disponible.
    			if ('logout' != $this->getRequest()->getActionName()) {
    				$this->_helper->redirector('index', 'index');
    			}
    		} else {
    			// If they aren’t, they can’t logout, so that action should
    			// redirect to the login form
    			if ('logout' == $this->getRequest()->getActionName()) {
    				$this->_helper->redirector('index');
    			}
    		}
    	}
     
    	public function indexAction()
    	{
    		$this->view->form = $this->getForm();
    	}
     
    	public function processAction()
    	{
    		$request = $this->getRequest();
    		// Vérifier que nous avons bien à faire à une requête POST
    		if (!$request->isPost()) {
    			return $this->_helper->redirector('index');
    		}
    		// Récupérons le formulaire et validons le
    		$form = $this->getForm();
    		if (!$form->isValid($request->getPost())) {
    			// Entrées invalides
    			$this->view->form = $form;
    			return $this->render('index'); // rechargeons le formulaire
    		}
    		// Récupérons notre adaptateur d’authentification et vérifions les identifiants
    		$adapter = $this->getAuthAdapter($form->getValues());
    		$auth = Zend_Auth::getInstance();
    		$result = $auth->authenticate($adapter);
    		if (!$result->isValid()) {
    			// Identifiants invalides
    			$form->setDescription('Invalid provided');
    			$this->view->form = $form;
    			return $this->render('index'); // rechargeons le formulaire
    		}
    		// Nous sommes authentifiés, redirection vers la page d’accueil
    		$this->_helper->redirector('index', 'index');
    	}
     
    	public function logoutAction()
    	{
    		Zend_Auth::getInstance()->clearIdentity();
    		$this->_helper->redirector('index'); // Retournez à la page de login
    	}
     
    }
    Merci de vos réponse,
    cordialement,
    choco

  2. #2
    Membre habitué
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Points : 167
    Points
    167
    Par défaut
    Salut @chocofusee,

    L'erreur vient du faite que ta fonction getAuthAdapter ne retourne rien !!
    Tu dois ajouter la ligne

    Enjoy!

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Effectivement, j'avais pas fait attention.
    Par contre, nouvelle erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A value for the identity was not provided prior to authentication with Zend_Auth_Adapter_DbTable
    Edit : j'ai trouver le problème, cela venait de mon adapter.
    Je vous le poste, si cela peut aider quelqu'un :


    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
     
    public function getAuthAdapter(array $params)
    	{
    		$config = new Zend_Config_Ini(APPLICATION_PATH. '/configs/application.ini', 'production');
     
    		$db = new Zend_Db_Adapter_Pdo_MySql(array(
    		'adapter'=>$config->resources->db->adapter,
    		'host'=>$config->resources->db->params->host,
    		'username'=>$config->resources->db->params->username, 
    		'password'=>$config->resources->db->params->password,
    		'dbname'=> $config->resources->db->params->dbname));
     
    		$adapter = new Zend_Auth_Adapter_DbTable($db);
    		$adapter->setTableName("users");
    		$adapter->setCredentialColumn("password");
    		$adapter->setIdentityColumn("username");
     
    		$adapter->setIdentity($params["username"]);
    		$adapter->setCredential(md5($params["password"]));
     
    		return $adapter;
     
    	}

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

Discussions similaires

  1. erreur avec zend_auth
    Par nana_md dans le forum Zend Framework
    Réponses: 1
    Dernier message: 03/09/2013, 13h15
  2. [ZF 1.7] Tuto Débutez avec Zend_Auth : erreur
    Par CinePhil dans le forum Zend_Acl & Zend_Auth
    Réponses: 8
    Dernier message: 21/01/2010, 14h28
  3. [ZF 1.7] Erreurs dans le cour Débutez avec Zend_Auth
    Par c_creatix dans le forum Zend_Acl & Zend_Auth
    Réponses: 3
    Dernier message: 10/02/2009, 14h12
  4. Erreur dans le tutoriel : "Zend_Acl / Zend_Auth scénario d'exemple"
    Par Invité dans le forum Zend_Acl & Zend_Auth
    Réponses: 3
    Dernier message: 10/08/2008, 19h52
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

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