J'ai un simple formulaire de connexion, un nom d'utilisateur et un mot de passe. Fondamentalement, quand un utilisateur est n'importe où sur le site Web, il peut cliquer sur un lien qui l'amènera à la page de connexion. Après s'être connecté, il est redirigé vers la page d'où il est originaire.L'authentification CakePHP se casse après une connexion incorrecte
Le problème:
disons que je suis dans le «/messages » page et je clique pour ouvrir une session, alors maintenant je suis sur «/utilisateurs/login ». - si la connexion est correcte, ou la connexion est incorrecte et rien n'est rempli dans la zone de texte, tout fonctionne comme prévu (si c'est correct, je suis redirigé vers "/ posts" sinon je reçois le message "nom d'utilisateur ou mot de passe incorrect" , j'essaie de se connecter à nouveau correctement et je suis redirigé vers «/messages »;
- si la connexion est incorrecte, et un texte est rempli dans la zone de texte Nom d'utilisateur, après la connexion je reçois le « mauvais nom d'utilisateur ou mot de passe ", ce qui est bon, mais si je remplis à nouveau le formulaire, peu importe si c'est correct ou non, je reçois" Vous n'êtes pas autorisé à accéder à cet emplacement ". Si j'essaie de me connecter pour la troisième fois, login fonctionne, mais je suis redirigé vers "/ users/posts" au lieu de "/ posts" (la valeur de la page de redirection, qui est stockée dans une session, est encore l "/ messages").
Voici le code:
function beforeFilter() {
parent::beforeFilter();
$this->Auth->allowedActions = array('confirmation');
$this->Auth->fields = array(
'username' => 'usr_username',
'password' => 'usr_password'
);
$this->Auth->userScope = array('User.usr_confirmed' => 1);
if($this->action == 'signup') {
$this->Auth->authenticate = $this->User;
}
}
function login() {
if ($this->Auth->user()) {
$this->redirect($this->Session->read('page'));
exit();
}
}
function logout() {
$this->Session->destroy('username');
$this->redirect('/');
exit();
}
Merci pour la réponse rapide. Mon action de formulaire pointe vers/user/login, qui n'est pas limité. C'est étrange, si j'imprime le contenu de $ this-> data ['User'], il est vide après le second login (quand le message "Vous n'êtes pas autorisé ..." apparaît). –
peut-être nous montrer le fichier de vue. ça pourrait aider –
Ah, vous aviez raison en fait ..J'avais $ form-> create ('User', array ('action' => 'login')), et quand je l'ai remplacé par $ form-> create (null, array ('url' => '/ users/login ')) cela a fonctionné .. Je pensais que les deux signifiaient la même chose .. –