Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-01-2011 22:21:57

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Zend_Auth // "Supplies credential invalid"

Salut à tous,

J'ai un soucis "nouveau" avec Zend_Auth. J'ai ce message d'erreur, alors que je ne crois pas avoir modifier mon code :

Code:

array
  0 => string 'Supplied credential is invalid.' (length=31)

Voici le dump (une partie) de l'adapteur :

Code:

  protected '_dbSelect' => null
  protected '_tableName' => string 'users' (length=5)
  protected '_identityColumn' => string 'username' (length=8)
  protected '_credentialColumn' => string 'password' (length=8)
  protected '_identity' => string 'admin' (length=5)
  protected '_credential' => string 'password' (length=8)
  protected '_credentialTreatment' => string 'SHA1(CONCAT(?,salt))' (length=20)
  protected '_authenticateResultInfo' => null
  protected '_resultRow' => null
  protected '_ambiguityIdentity' => boolean false

Le login et pass sont correct, je l'ai ai modifié depuis le code de rob Allen :

Code:

INSERT INTO users (username, password, salt, role, date_created)
VALUES ('admin', SHA1('passwordce8d96d579d389e783f95b3772785783ea1a9854'),
    'ce8d96d579d389e783f95b3772785783ea1a9854', 'administrator', NOW());

Je vois pas trop ou est le problème, et dur de trouver des réponses sur le net.

Portions de code :

Code:

    public function getAuthAdapter($values) {
        if (null === $this->_authAdapter) {

            $dbAdapter = Zend_Db_Table::getDefaultAdapter();
            $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
            $tableRecord = Zend_Registry::get('config')->tables;
            
            if (isset($tableRecord)) {
                $authAdapter->setTableName($tableRecord->users)
                        ->setIdentityColumn('username')
                        ->setCredentialColumn('password')
                        ->setCredentialTreatment('SHA1(CONCAT(?,salt))');

                $this->setAuthAdapter($authAdapter);
                

                $this->_authAdapter->setIdentity($values['username']);
                $this->_authAdapter->setCredential($values['password']);
            }
        }
        return $this->_authAdapter;
    }

...

    public function authenticate($credentials) {
        
        $adapter = $this->getAuthAdapter($credentials);
        var_dump($adapter);
        $auth = $this->getAuth();        
        $result = $auth->authenticate($adapter);
        
        if ($result->isValid()) {
            $user = $adapter->getResultRowObject();
            $auth->getStorage()->write($user);
            return true;
        } else {
            $this->errorMessage = $result->getMessages();
        }
        return false;
    }

...

        $authentification = new Custom_Auth_Authentication();
        if ($authentification->getIdentity()) {
            $this->_redirect("/accueil-administration.html");
        } else {
            $form = new Frontoffice_Form_Login();
            $login = $this->getRequest()->getParam('login');
            $password = $this->getRequest()->getParam('password');
            
            if ($this->_request->isPost()) {
                $formData = $this->getRequest()->getPost();

                if ($form->isValid($formData)) {
                    $authentification = new Custom_Auth_Authentication();
                    if ($authentification->authenticate($formData)) {
                         $this->_redirect("/accueil-administration.html");
                    } else {
                        throw new Exception(__CLASS__ . ' / ' . __FILE__ . ' / ' . __METHOD__ . ' / ' . __LINE__);
                    }

                } else {
                    $form->populate($formData);
                }
            }
            $this->view->form = $form;
        }

Une idée?
Merci
F.

Hors ligne

 

#2 19-08-2011 16:20:08

bandit_rouge
Membre
Date d'inscription: 18-02-2010
Messages: 31

Re: Zend_Auth // "Supplies credential invalid"

Bonjour,

Même problème...
Quelqu'un a une idée?
Dans mon contrôleur du formulaire d'inscription:

Code:

for ($i = 0; $i < 50; $i++)
                {$dynamicSalt .= chr(rand(33, 126));}
                
                $passwordsalted = $form->getValue("password").$dynamicSalt;
                $riders->set_password(md5($passwordsalted));
                $riders->set_salt($dynamicSalt);

et dans mon contrôleur de mon formulaire de login:

Code:

public function loginAction()
    {
        
        $db = $this->_getParam('db');
        $form = new Application_Form_Login();
        
        $this->view->formLogin = $form;
   
        //$loginForm = new Application_Form_Login($_POST);
        if ($this->_request->isPost()) {  
        $formData = $this->_request->getPost();
        if ($form->isValid($formData)) {
 
            $adapter = new Zend_Auth_Adapter_DbTable(
                $db,
                'riders',
                'email',
                'password',
                'MD5(CONCAT(?, salt))'
                //'MD5((?))'
                );
 
            $adapter->setIdentity($form->getValue('email'));
            $adapter->setCredential($form->getValue('password'));
            $auth = Zend_Auth::getInstance();
            $result = $auth->authenticate($adapter);
 
            if ($result->isValid()) {
                $user = $adapter->getResultRowObject(null, 'password');
                $auth->getStorage()->write($user);
                $this->_helper->FlashMessenger('Successful Login');
                $this->_helper->redirector('index', 'index');
                return;
            }
            else{
             switch ($result->getCode()) {

                    case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
                        printf("Identifiant inconnu");
                        break;

                    case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
                        printf("Mot de passe incorrect");
                        $messages = $result->getMessages();
                        foreach ($messages as $i => $message) {
                              printf($message);
                        }
                        break;

                    case Zend_Auth_Result::SUCCESS:
                        /** do stuff for successful authentication **/
                        break;

                    default:
                        /** do stuff for other failure **/
                        break;
                
            }}}}}

Dernière modification par bandit_rouge (19-08-2011 16:20:22)

Hors ligne

 

#3 19-08-2011 18:01:05

bandit_rouge
Membre
Date d'inscription: 18-02-2010
Messages: 31

Re: Zend_Auth // "Supplies credential invalid"

je suis un noob...
Ca fait des jours que je m'arrache les cheveux...
lors de la creation de mon "grain de sel" je génére un chaine de 50 caractères alors que mon type dans Mysql est un varchar(45).
je vous le disais je suis un noob!

Est ce qu'il en a comme moi qui passe des jours sur une erreur à la con?
moi c'est tout le temps ;-)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages