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] problème registre


Sujet :

Zend_Acl & Zend_Auth PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut [Zend_Auth] problème registre
    Bonjour,
    je viens de finir le tutoriel Zend_Auth de Rob Allen. Et j'ai essayé de l'adapter à un autre tutoriel zend de gestion d'album. J'ai un petit problème de registre visiblement, puisque lorsque j'essaye de me logger j'ai ce message:


    Fatal error: Uncaught exception 'Zend_Exception' with message 'No entry is registered for key 'dbAdapter'' in D:\Programmes sans installation\ZendFramework-1.5.2\library\Zend\Registry.php:145 Stack trace: #0 C:\xampp\htdocs\tutoriel-zf\application\controllers\AuthController.php(36): Zend_Registry::get('dbAdapter') #1 D:\Programmes sans installation\ZendFramework-1.5.2\library\Zend\Controller\Action.php(502): AuthController->loginAction() #2 D:\Programmes sans installation\ZendFramework-1.5.2\library\Zend\Controller\Dispatcher\Standard.php(293): Zend_Controller_Action->dispatch('loginAction') #3 D:\Programmes sans installation\ZendFramework-1.5.2\library\Zend\Controller\Front.php(914): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #4 C:\xampp\htdocs\tutoriel-zf\index.php(30): Zend_Controller_Front->dispatch() #5 {main} thrown in D:\Programmes sans installation\ZendFramework-1.5.2\library\Zend\Registry.php on line 145
    Voila est-ce que quelqu'un a une idée.
    Merci d'avance

  2. #2
    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, sans plus de code, ça risque d'être difficile.

    Mais selon le message d'erreur, tu essaie d'accéder à ton adaptateur de BDD dans le registre alors qu'il n'existe pas.

    Est-ce que tu l'as bien stocké quelque part (dans le bootstrap ?)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Voici le code de la fonction loginAction () (qui ne marche pas visiblement) dans le fichierAuthController.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
    45
    46
    47
    48
    49
    50
    51
    52
    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($dbAdapter);
    				$authAdapter->setTableName('users');
    				$authAdapter->setIdentityColumn('username');
    				$authAdapter->setCredentialColumn('password');
     
    				// Set the input credential values to authenticate against
    				$authAdapter->setIdentity($username);
    				$authAdapter->setCredential($password);
     
    				// do the authentication
    				$auth = Zend_Auth::getInstance();
    				$result = $auth->authenticate($authAdapter);
     
    				if ($result->isValid()) 
    				{
    					// success: store database row to auth's storage
    					// system. (Not the password though!)
    					$data = $authAdapter->getResultRowObject(null, 'password');
    					$auth->getStorage()->write($data);
    					$this->_redirect('/');
    				} 
    				else 
    				{
    					// failure: clear database row from session
    					$this->view->message = 'Login failed.';
    				}
    			}
    		}
    		$this->view->title = "Log in";
    		$this->render();
    	}
    Pour le boostrap, je suis pas sur de savoir ce dont il s'agit exactement...

  4. #4
    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
    Est-ce que tu utilises le mvc ?

    Si oui, peux-tu nous montrer ce que tu as dans le fichier index.php qui traite toutes tes requêtes (le bootstrap) ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Voici mon index :
    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
    <?php
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_error', 1);
    date_default_timezone_set('Europe/Paris');
     
    //mise en place des répertoire et chargement des classes
    set_include_path('.'
    	. PATH_SEPARATOR . './library'
    	. PATH_SEPARATOR . './application/models/'
    	. PATH_SEPARATOR . get_include_path());
    include "Zend/Loader.php";
    Zend_Loader::registerAutoload();
     
    //chargement de la configuration
    $config = new Zend_Config_Ini('./application/config.ini', 'general');
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
     
    //mise en place de la BDD
    $db = Zend_Db::factory($config->db);
    Zend_Db_Table::setDefaultAdapter($db);
     
    //Setup controller
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    $frontController->setControllerDirectory('./application/controllers');
    Zend_layout::startMvc(array('layoutPath'=>'./application/layouts'));
     
    //Run
    $frontController->dispatch();
     
    class MyAcl extends Zend_Acl
    {
        public function __construct(Zend_Auth $auth)
        {
            parent::__construct();
     
            $roleGuest = new Zend_Acl_Role('guest');
     
            $this->add(new Zend_Acl_Resource('index'));
            $this->add(new Zend_Acl_Resource('ajouter'));
            $this->add(new Zend_Acl_Resource('modifier'));
            $this->add(new Zend_Acl_Resource('supprimer'));
     
            $this->addRole(new Zend_Acl_Role('guest')); 
            $this->addRole(new Zend_Acl_Role('member'), 'guest');
            $this->addRole(new Zend_Acl_Role('admin'), 'member');
     
            // Les invités peuvent uniquement voir le contenu
            $this->allow('guest', 'index');
            $this->allow('member', 'ajouter');
            $this->allow('member', 'modifier');
            $this->allow('admin'); // Accès sans aucune restriction
     
        }
    }
     
    ?>
    J'ai commencé à rajouter une classe pour adapter le Zend_Acl afin de définir plusieurs types d'utilisateur. Mais c'est pas cette classe qui fait planter le reste, j'ai essayé en l'enlevant et ça me fait toujours la même erreur.

  6. #6
    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
    Tu définis un connecteur pour ta BDD ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //mise en place de la BDD
    $db = Zend_Db::factory($config->db);
    Zend_Db_Table::setDefaultAdapter($db);
    Mais tu ne le stocke pas dans le registre (il sera juste utilisé par défaut par les objets d'une classe héritée de Zend_Db_Table).

    Or, dans la fonction loginAction(), le connecteur est récupéré par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dbAdapter = Zend_Registry::get('dbAdapter');
    Pour pouvoir faire cela, il faut déjà l'avoir stocké dans le registre, donc avoir fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zend_Registry::set('dbAdapter', $db);
    juste après son initialisation dans le bootstrap (après les 3 lignes citées en premier dans ce message).

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

Discussions similaires

  1. [ZF 1.11] [Zend_Auth] Problème avec setCredentialTreatment
    Par Seryus dans le forum Zend_Acl & Zend_Auth
    Réponses: 2
    Dernier message: 11/02/2012, 20h37
  2. Réponses: 0
    Dernier message: 31/08/2009, 13h04
  3. Réponses: 7
    Dernier message: 23/07/2005, 12h50
  4. problème de lecture base de registre
    Par pafounet3 dans le forum MFC
    Réponses: 10
    Dernier message: 31/12/2003, 14h06
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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