Dans le AppControlle tu as bien
****Bonjour,
J'essaye depuis plusieurs jours de resoudre un probleme de deconnexion avec Cakephp3.
J'ai suivi le tutoriel "auth" sur la documentation.
Pour l'inscription/connexion tout est OK
le seul probleme c'est lorsque je souhaite me deconnecte /users/logout
j'ai cette erreur que je ne comprends pas:
Error: Call to undefined method Cake\Controller\Component\AuthComponent::redirect()
File /media/htdocs/cakephp/vendor/cakephp/cakephp/src/Controller/Component/AuthComponent.php
Line: 632
Si vous avez une idee ?
Merci d'avance.
23 réponses
Montre ton code, tu as bien utiliser les use ?
L'erreur est explicite, il n'arrive pas à définir la classe statique redirect, donc dans le AppController elle ne doit pas être chargé
Oui, voici les use utilise:
namespace App\Controller:
use App\Controller\AppController;
use Cake\Event\Event;
use Cake\Network\Exception\NotFoundException;
use App\Controller\AuthComponent;
La methode beforeFilter:
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
$this->Auth->allow(['add','logout']);
}
Et Logout:
public function logout()
{
return $this->redirect($this->Auth->logout());
$this->Flash->success('Vous êtes maintenant déconnecté.');
}
EDIT:
Si, la classe est bien charge j'utilise redirect pour le login par exemple:
public function login(){
if($this->Auth->user()){
//return $this->redirect($this->Auth->redirectUrl('users/index'));
}
if ($this->request->is('post')) {
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
return $this->redirect($this->Auth->redirectUrl('users/index'));
}
$this->Flash->error(__("Nom d'utilisateur ou mot de passe incorrect, essayez à nouveau."));
}
}
Oui bien sur, voici le code:
public function initialize()
{
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'fields' => ['username' => 'email', 'password' => 'password']]]
]);}
essaye redirectUrl(); seul sans rien dedans ?
J'ai deja essayer mais sans success :/
J'ai la meme erreur.
Bonjour,
J'ai exactement fait ca:
public function logout()
{
$this->Auth->logout();
$this->Flash->success('Vous êtes maintenant déconnecté.');
return $this->redirect($this->Auth->redirectUrl('users/login'));
}
Mais toujours le meme probleme:
Error: Call to undefined method Cake\Controller\Component\AuthComponent::redirect()
Je pense que c'est soi le ('user/login') qui bloque ou soit un problème au niveau de l'AppController
Pour la le Controlleur Users
et appController:
J'ai compris tes explications merci :)
Cependant j'ai essayer ta methode logout, mais j'ai toujours la meme erreur
Error: Call to undefined method Cake\Controller\Component\AuthComponent::redirect()
File /media/htdocs/cakephp/vendor/cakephp/cakephp/src/Controller/Component/AuthComponent.php
Line: 632
Essaye cela
la documentation officielle préconise la syntaxe suivante
et si tu le couple avec la config suivante, cela doit fonctionner.
J'utilise ce code dans plusieurs app sans problème particuler.
Voici le lien vers la partie connectino du tutoriel de blog
Merci pour vos reponses mes ça ne marche toujours pas j ai toujours la meme erreur :/
Quelle est ta version de CakePHP exactement ?
A moins que tu utilises ta propore version du AuthComponent, tu devrais enlever le
c'est cake php 3 qu est ce que tu veux dire par ma propre version AuthComponenet?
je veux connaitre la version de CakePHP 3.0.x (le x m'interesse).
Enfin elève la ligne que je t'ai demandé.
use App\Controller\AuthComponent; signifie que tu veux charger un fichier situé dans src/Controller/AuthComponent !!?
c'est juste version 3
Je vais essayer une dernier fois... de quand date ton dernier composer update ?
meme pas une semaine
et quand tu enlève la ligne que je t'ai demandé dans ton UsersController ?
je l'ai déjà enlevé et ça ne marche pas
ça a marché finalement j'ai juste supprimé le dossier vendor merci pour vos idées