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 :

Impossible de s'authentifier


Sujet :

Zend_Acl & Zend_Auth PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Impossible de s'authentifier
    Bonjour,

    je viens solliciter votre aide car j'ai un souci avec mon système de connexion. Après avoir suivi le tutoriel de Rob Allan : http://akrabat.com/zend-auth-tutorial/

    J'ai voulu le mettre en place dans mon projet et voila l'erreur qu'il me met :
    Fatal error: Uncaught exception 'Zend_Auth_Adapter_Exception' with message 'A value for the identity was not provided prior to authentication with Zend_Auth_Adapter_DbTable.' in C:\wamp\bin\php\php5.3.8\PEAR\Zend\Auth\Adapter\DbTable.php on line 419
    Voila mon code :
    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <?php
    class AuthController extends Zend_Controller_Action
        {
     
    		 public function init()
        {
            /* Initialize action controller here */
        }
     
        public function indexAction()
        {
            $form = new Form_Login();
            $request = $this->getRequest();
            if ($request->isPost()) {
                if ($form->isValid($request->getPost())) {
                    if ($this->_process($form->getValues())) {
                        // We're authenticated! Redirect to the home page
                        $this->_helper->redirector('index', 'index');
                    }
                }
            }
            $this->view->form = $form;
        }
     
        protected function _process($values)
        {
            // Get our authentication adapter and check credentials
            $adapter = $this->_getAuthAdapter();
            $adapter->setIdentity($values['LOGIN']);
            $adapter->setCredential($values['PASSWD']);
     
            $auth = Zend_Auth::getInstance();
            $result = $auth->authenticate($adapter);
            if ($result->isValid()) {
                $user = $adapter->getResultRowObject();
                $auth->getStorage()->write($user);
                return true;
            }
            return false;
        }
     
        protected function _getAuthAdapter()
        {
     
            $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
            $authAdapter->setTableName('login')
                        ->setIdentityColumn('LOGIN')
                        ->setCredentialColumn('PASSWD')
                        ->setCredentialTreatment('SHA1(CONCAT(?,salt))');
     
            return $authAdapter;
        }
     
        public function logoutAction()
        {
            Zend_Auth::getInstance()->clearIdentity();
            $this->_helper->redirector('index'); // back to login page
        }
     
     
     
     
     
         /*
            public function loginAction()
            {
            	
    			$form= new Form_Login();
    			
    			$request = $this->getRequest();
               $this->view->message = 'Connexion';
    		
    		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 = 'Erreur de login';
    				// 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);
    					echo "coucou";
    					//$this->_redirect('/');
    				} else {
    					// failure: clear database row from session
    					$this->view->message = 'Erreur de connexion.';
    				}
    			}
    		}
    		$this->view->title = "Administration";
    		$this->render();
            }
         */
        }
        ?>
    Login.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
    <?php
     
    class Form_Login extends Zend_Form
    {
     
        public function init()
        {
            $this->setName("login");
            $this->setMethod('post');
     
            $this->addElement('text', 'login',array('required' => true, 'label'  => 'Login :',
            ));
     
            $this->addElement('password', 'passwd', array('required' => true, 'label' => 'Mot de passe :', 'validator'=>'stringlength', 'options'=>array('min'=>3), 'breakChainOnFailure'=>true
            ));
     
            $this->addElement('submit', 'Envoyer', array('label'    => 'Envoyer'));
        }
     
     
    }
    index.phtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php $this->headTitle('Login'); ?>
     
    <h1>Connexion</h1>
     
    <?php echo $this->form->setAction($this->url()); ?>
    Et mon main.ini :
    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
    [prod]
     
    includepaths[] = APP_PATH "/model"
     
    autoloadernamespaces[] = Table
    autoloadernamespaces[] = Form
     
    bootstrap.path =  APP_PATH "/Bootstrap.php"
    bootstrap.class = FormationBoot
     
    debug = 0
     
    log.logfile        = APP_PATH "/logs/main.log"
    log.filterlevel = 6
     
    resources.db.adapter            = Pdo_Mysql
    resources.db.params.username    = bd
    resources.db.params.dbname      = grandprix
    resources.db.params.unix_socket = /var/run/mysqld/mysqld.sock
    resources.db.params.password    = bede
     
    resources.db.params.charset = "utf8"
     
    resources.session.name           = appformation
    resources.session.save_path      = APP_PATH "/tmp/sessions"
     
    resources.cachemanager.moncache1.frontend.name                            = core
    resources.cachemanager.moncache1.frontend.options.automatic_serialization = 1
    resources.cachemanager.moncache1.frontend.options.lifetime                = 60
    resources.cachemanager.moncache1.backend.name                             = file
    resources.cachemanager.moncache1.backend.options.cache_dir                = APP_PATH "/tmp/cache"
     
    resources.view.basePath   = APP_PATH "/views"
     
    resources.layout.layoutPath = APP_PATH "/layouts"
    resources.layout.layout     = design
     
    resources.translate.adapter = array
    resources.translate.data = APP_PATH "/translate"
    resources.translate.scan = Zend_Translate::LOCALE_DIRECTORY
     
    resources.frontcontroller.controllerDirectory = APP_PATH "/controllers"
     
     
    [dev:prod]
    debug = 1
     
    resources.frontcontroller.throwexceptions = 1
    resources.view.strictVars = 1
    Je vous précise je suis en deuxième année de DUT informatique, et il s'agit un projet purement scolaire, un "cas d'école". En tout cas cela fait maintenant 3 jours que j'écume les forums pour essayer de comprendre mon erreur mais je n'ai rien trouvé.

    Je vous remercie par avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,

    $values['LOGIN '] correspond à la valeur du champ name de ton form.donc $values['LOGIN '] ne devrait pas être en majuscule.Idem pour password.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       protected function _process($values)
        {
            // Get our authentication adapter and check credentials
            $adapter = $this->_getAuthAdapter();
            $adapter->setIdentity($values['login']); /
            $adapter->setCredential($values['passwd']);
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    protected function _getAuthAdapter()
        {
     
            $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
            $authAdapter->setTableName('login')
                        ->setIdentityColumn('LOGIN') //LOGIN doit être le nom de la colonne da la table login
                        ->setCredentialColumn('PASSWD')//PASWD doit être le nom de la colonne da la table login
                        ->setCredentialTreatment('SHA1(CONCAT(?,salt))');
     
            return $authAdapter;
        }

Discussions similaires

  1. impossible de s'authentifier
    Par aziza_1989 dans le forum Zend_Acl & Zend_Auth
    Réponses: 4
    Dernier message: 14/05/2012, 16h52
  2. [Débutant] Impossible de s'authentifier
    Par unix27 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 21/07/2006, 16h20
  3. [ArchiveBuilder][JavaMail] exécution impossible...
    Par Gorthal dans le forum JBuilder
    Réponses: 7
    Dernier message: 10/01/2003, 09h12
  4. Réponses: 8
    Dernier message: 20/11/2002, 11h50

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