Bonjour,
Je développe un site offrant un espace utilisateur. Sur cette espace, l'utilisateur peut manager son profil et tout une panoplie d'autres actions uniquement accessible aux utilisateurs connecté.
Ma question est: Comment définitivement déconnecté l'utilisateur ?
Car pour le moment je fais ceci dans mon controller Utilisateurs:
function deconnexion()
{
$this->Auth->logout();
$this->Session->destroy();
$this->redirect(//Redirection vers la page d'accueil);
}
Une fois le bouton "Se déconnecter" cliquer, l'utilisateur est bien redirigé vers la page d'accueil. Sauf que si je clique sur le logo du site qui lui va sur la page d'accueil, l'utilisateur est soudainement reconnecté.
Je dis qu'il est reconnecté, car les liens du menu vers la page de profil etc.. s'affiche.
D'ailleurs dans mon layout pour tester si les liens du profils etc s'affichent, je fais le test suivant :
if(AuthComponent::user('id'){
//Lien si l'utilisateur est connecté
}
Qu'est-ce que je fais de faux ? Pourquoi est-ce que mon utilisateur ne se déconnecte pas correctement ?
Merci d'avance
Bonjour,
Finalement, cela fonctionne. Un fichier .htaccess à la racine de mon serveur était la cause du bug.
bonjour tu peux tout simplement faire ça
public function deconnexion() {
return $this->redirect($this->Auth->logout());
}
Cordialement.
Bonjour @ freezlike, j'ai déjà essayé, et ça ne change rien..
Peut-être est-ce dû à la version de PHP du serveur ? enfin quelque chose au niveau de l'hébergeur et non du code ?
Bonjour,
Teste ça dans ta vue :
<?php if ($this->Session->read('Auth.User.id')): ?>
Si l'utilisateur est connecté ça s'affiche ici ! :)
<?php endif ?>
et pense à mettre ça
<!-- nocache -->
pour t'assurer que ça n'aille pas mettre cette partie en cache.
<!-- /nocache -->
Pour moi juste un
return $this->redirect($this->Auth->logout());
Si ça ne marche pas c'est soit un problème de cache, soit un problème de condition ??
Bonjour @Underscreen, j'ai essayé ce que tu as proposé, et il se trouve que mon utilisateur n'est pas déconnecté.
J'ai mis ce petit snippet dans mon layout:
<?php if ($this->Session->read('Auth.User.id')){
echo "connected";
} ?>
Et lorsque je clique sur le bouton déconnecté, l'utilisateur est redirigé vers la page de connexion sauf que le text "Connected" s'affiche tout en haut dans toutes mes pages...
En résumé, l'utilisateur n'est jamais déconnecté de mon site.
Je vais maintenant essayé d'ajouter le
<!-- nocache -->
//menu d'un utilisateur connecté
<!-- /nocache -->
Et je vous redonne des nouvelles bientôt :)
Bon, j'ai installé le CachHelper comme indiqué dans la documentation. Ensuite j'ai mis les commentaires nocache autour de mon menu pour utilisateurs connecté comme ceci:
<!-- nocache -->
//menu d'un utilisateur connecté
<!-- /nocache -->
Mais ça ne change rien, il se passe le même truc bizarre je suis déconnecté mais dès que je reviens sur la page d'accueil, je suis reconnecté... =/
Si quelqu'un à une autre proposition, je suis preneur
Bonjour,
Alors après avoir enlevé toutes les modifications précédemment faites, je découvre un nouveau problème :
Il est impossible pour un utilisateur connecté d'accéder à sa page de profil, le composant Auth redirige automatiquement vers la page de connexion ?
Pour préciser, le site est en ligne, dans un sous-domaine. Donc la question est, y'a-t-il une configuration spéciale a effectué ?
De plus, le serveur Apache est bien configuré, le mode_rewrite est autorisé.
Si quelqu'un à une info, je suis preneur.
Merci d'avance