2009-07-16 10 views
1

HI,gâteau Php problème de

J'ai un problème avec un gâteau php construit en auth - je ne peux pas connecter ...

1) utilisateur est ajouté par pannel de contrôle de l'application et haché en utilisant $ this- > Auth> mot de passe ('xxx') - je l'ai vérifié est Corrent dans db

sel de sécurité

2) ne emtpy

3) Action de données utilisateur/Connexion [ 'User'] [ 'mot de passe '] est vide (je ne sais pas si c'est correct mais j'ai lu que Auth retirer le contenu des données [' mot de passe '] ou des données [' User '] [' mot de passe '] - suis-je correc? t?

4) db a des utilisateurs de table avec des champs nom d'utilisateur et mot de passe

Après que je suis en train de se connecter session- $> flash ('auth') dit:

Échec de la connexion. Nom d'utilisateur invalide ou mot de passe.

mais beforeFilter dans AppController j'ai mis

$ this-> Auth> loginError = « Non, vous fou! Ce n'est pas le bon mot de passe! ';

Alors qu'est-ce qui ne va pas? :(

Répondre

4

Activer le débogage et vérifier ce que les requêtes sont générées. Si aucune, vous avez probablement quelque chose de mal à votre avis. S'il y en a, puis choisissez le mot de passe haché il vérifie contre et mettre à jour le mot de passe dans db. Si vous réussissez tout devrait bien fonctionner.

Réglage premier utilisateur est un peu délicat.

+1

Si la requête n'est pas générée, le formulaire est erroné. – givanse

+0

@givanse - J'ai cette erreur (aucune requête générée). Savez-vous ce qui pourrait provoquer l'absence de requête? –

0

Votre problème semble être dans le tableau de données POST'd. Si le champ data['User']['password'] est vide, je pense que vous pourriez avoir trouvé votre problème IIRC, le composant Auth fait un hash automatique de la pa ssword. Mais je crois que $this->data['User']['password'] ne devrait pas être vide (dans le contrôleur) - il ne sera tout simplement pas en clair.

Vérifiez votre formulaire pour vous assurer que vos noms d'entrée sont corrects. En outre, comme suggéré de niteria, essayez de vérifier le code SQL dans le vidage de débogage pour voir quelles informations d'identification sont vérifiées par rapport à la base de données (vous pouvez appeler $this->Auth->password('somestring') pour savoir quel devrait être le mot de passe haché).

GL!

1

Assurez-vous que vous avez entré

function beforeFilter(){ 
    parent::beforeFilter(); 
} 

dans votre UsersController

2

Ne pas ajouter:

function beforeSave(){ 

    if(isset($this->data[$this->alias]['password'])) { 
     $this->data[$this->alias]['password'] = Security::hash($this->data[$this->alias]['password'], null, true); 
     return true; 
    } 

} 

Si vous avez le script suivant dans app_controller:

var $ components = array ('Auth', 'Email');

function beforeFilter() { 
    $this->Auth->fields = array(
     'username' => 'email', 
     'password' => 'password' 
    ); 
} 
1

Assurez-vous que votre colonne de mot de passe de la base de données a le type de données correct, à savoir char(40).