Le composant Auth->login ne fonctionne pas

Par Miku, il y a 13 ans


Bonjour,

Voilà ça fait plusieurs jours ou je bloque sur ce problème, le composant Auth->login ne fonctionne pas dans mon application, je m'explique, cela me retourne constamment "Identifiants incorrects.", je pense avoir trouvé ou ce situe le problème, voyez-vous normalement quand le formulaire est soumis cela exécute une requête SQL de sélection sur les users, mais ici aucune requête ne s'effectue ! Pourquoi ?

Cordialement.

23 réponses

kal-el, il y a 13 ans

Si tu nous montrer le bout de code ou ça coince, on pourrai te venir en aide plus facilement :)

Miku, il y a 13 ans
public function login() {
    if($this->request->is('post')) {
        if($this->Auth->login()) {
            $this->Session->setFlash('LOGGED');
            $this->redirect('/');
        }
    }
}

Le code est celui de la doc officiel.

philieric, il y a 13 ans

As tu vérifié le cryptage du mot de passe, correspond-il à celui qui est enregistrer dans ta base de donnée ?

Miku, il y a 13 ans

Oui, grâce à la method de mon model User, je n'ai de toute façon pas de problème avec le cryptage du mot de passe, j'ai même effectuer des tests la dessus.

public function beforeSave($options = array()) {
        if (isset($this->data$this->alias]'password'])) {
            $this->data$this->alias]'password'] = AuthComponent::password($this->data$this->alias]'password']);
        }
        return true;
    }
MatthieuB, il y a 13 ans

Hello,

J'ai semble t'il le même problème, Je viens de parcourir beaucoup de solution proposées sur des forums etc, mais rien de concluant, as tu trouvé une solution ?

Merci par avance,

Miku, il y a 13 ans

Salut,

Non je n'ai toujours pas de solution à ce problème :/

Kafin HighManner, il y a 13 ans

Tu as suivis le tutoriel de la doc en français ? Si oui attention il y a des coquilles !

Par exemple dés le départ avec la base de données

CREATE TABLE users (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nom_user VARCHAR(50),// <= Ne respecte pas les conventions ! ici c'est username
    mot_de_passe VARCHAR(50), // <= et ici password 
    role VARCHAR(20),
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

Sinon est ce que tu déclare bien le composant auth dans ton AppController ?

kal-el, il y a 13 ans

Ok 2 choses, peux-tu nous montrer le code de ton AppController ou tu initialise le composant? Aussi, essayes de telecharger une nouvelle installe de Cake et essayes rapidement de faire la meme chose (pas de copier coller STP) et dis nous si sa plante toujours.

a+

Miku, il y a 13 ans
<?php
class AppController extends Controller {
    public $components = array('Session', 'Cookie', 'Auth');
}

@kal-el : Oui j'ai déjà essayais de faire une nouvelle installation et de refaire le tutoriel mais cela n'a pas fonctionné.
@Kafin HighManner : J'ai suivi le tutoriel anglais et je connais déjà les conventions de cake au niveau des noms des colonnes de la base de donnée, username et password sont de la partie dans ma db.

kal-el, il y a 13 ans

@Katsumoto : Peux-tu m'envoyer ton application ainsi que ta base de donnée pour que je test sa en direct chez moi (beaucoup plus facile de trouver des erreurs). Voici mon adresse : contact@kartono-loic.com (pas de spam les gars s'il vous plait :) )

Martin Gagné, il y a 12 ans

Bonjour! J'ai le même problème.. Quelqu'un a trouvé une réponse? L'élément sql_dump n'affiche d'ailleurs aucune requête sql

EDIT:
Problème résolu.. Le probleme venait du formulaire.
J'ai changé

<?php echo $this->form->input('password', array('label' => 'Password', 'class' => 'form-input', 'required')); ?>

Pour ceci:

<?php echo $this->Form->input('password', array('label' => 'Password', 'class' => 'form-input', 'required')); ?>

Notez le F majuscule de Form. C'était ça l'erreur. Merde.

MaeALT, il y a 12 ans

Bonjour chers cookers.
Je me trouve dans la même situation que vous : je peux sans problème ajouter un utilisateur à mon application mais lors du login, aucune requête n'est exécutée et il me renvoie authentification failed (oui, sans chercher, difficile de trouver). Auriez-vous trouver le pourquoi du comment?
Je précise : ma table s'appelle 'Utilisateur', le champ login est 'LOGIN_UTILISATEUR' et le password 'PASSWORD_UTILISATEUR'. J'ai donc mis les input avec ces id (et mon modèle est correctement relié à la table).
Cela poserait-il problème?

Merci d'avance :)

z0rgY, il y a 12 ans

Salut, en suivant le tuto de la formation sur Cake, j'ai le même problème.
Un coup ca me log alors que je mets de faux identifiants, un coup ca ne me log pas.
J'ai scruté 20 fois le code de démo pour voir la différence avec le mien, jusqu'à en venir à remplacer par copier / coller, et pareil.
Le composant serait buggé ?

kal-el, il y a 12 ans

Si l'un d'entre vous veut bien m'envoyer son projet via git ou par email, je me ferai un plaisir de jetter un oeil (mon adresse email est visible plus haut)

z0rgY, il y a 12 ans

Je t'ai mailé la chose )

kal-el, il y a 12 ans

Je n'ai rien recu pour le moment.. :)

z0rgY, il y a 12 ans

oui, je peux pas envoyer de pieces jointes sur ton adresse on dirait:
"Our system detected an illegal attachment on your message."

kal-el, il y a 12 ans

Hmmm il me semble qu'il faut que tu precises le type d'authentification :

public $components = array('Session','Cookie',
    'Auth' => array(
        'authenticate' => array(
            'Form'
        )
    )
);

Ou alors tu fais comme sa :

if($this->Auth->login($this->request->data)){
}

Par curiositer, quelle version de Cake vous utilisez les gars?

Pardon pour les eventuelles fautes de frappe, je suis sur mon smartphone :)

MaeALT, il y a 12 ans

J'ai configuré le composant :

public $components = array(
        'DebugKit.Toolbar',
        'Session',
        'Auth' => array(
            'loginAction' => array(
                'controller' => 'utilisateurs',
                'action' => 'login'
                ),
            'loginRedirect' => array(
                array(
                    'controller' => 'tickets',
                    'action' => 'index'
                )
            ),
            'authenticate' => array(
                'all' => array(
                    'userModel' => 'Utilisateur'),
                'Form' => array(
                    'userModel' => 'Utilisateur',
                        'fields' => array(
                            'username' => 'LOGIN_UTILISATEUR',
                            'password' => 'PASSWORD_UTILISATEUR'
                        )
                    )
                )
            ),
        'Security' => array('csrfUseOnce' => false)
    );

Ca ne me paraît donc pas être de là que vient le problème dans mon cas :/

z0rgY, il y a 12 ans

Wai j'ai beau tout essayer ca ne toujours pasmarche pas, la seconde solution kael fais marcher le login à tous les coups :/

z0rgY, il y a 12 ans

Il semble que ca marche maintenant,

j'ai fait comme ca

if ($this->request->is('post')) {
      if ($this->Auth->login()){blabla^^}

au lieu de

if (!empty($this->request->data)) {
            if ($this->Auth->login()) {}

Maintenant si quelqu'un sait pourquoi l'une marche et l'autre pas, je suis preneur !
Btw j'utilise le tout dernier cake 2.3.6

kal-el, il y a 12 ans

Hmmm, c'est très étrange. Je viens de tester sur mes sites (Cake 2.3.6) mais tout marche très bien, avec l'une ou l'autre des techniques...