Salut,

Je veux déconnecter un utilisateur en utilisant le Auth Component de cakephp mais la méthode logout ($this->Auth->logout()) ne déconnecte que l'utilisateur courant . Malheureusement on peut pas spécifier un paramètre (le user_id par exemple) qu'on veut le déconnecter :(

Existe t'il une alternative ?

Merci d'avance

3 réponses


Comment on peut récupérer l'ID de la session d'un utilisateur connecté ??

Bonjour.
À ma connaissance, le composant Auth, utilise la session, qui est donc côté client et non serveur.
Il n'est donc pas possible de déconnecter un utilisateur autre que sois-même, à moins de passer par une identification utilisant la base de données ou via un système de fichier en cache par exemple.
Ce n'est bien sûr qu'une analyse, n'ayant toujours utilisé que le composant Auth tel quel.

Peut-être que des personnes ayant utilisé des systèmes d'authentification spécifique pourront te répondre plus précisément, mais j'en doute.

Bonjour , voila comment j'ai fait personnellement,
Dans ma table user , j'ai ajouté un champ qui me permet d'activer ou non un utilisateur avec mon interface admin.
Ensuite dans AppController dans la fonction beforeFilter j'ai mis :

//Chargement du model User
$this->loadModel('User');
//Test si l'utilisateur existe dans ma base de donnée
if (!$this->User->exists($this->Auth->user()'id_user']))
{
    //Suppression de la session et donc deconnexion forcé de l'utilisateur s'il n'existe pas
    $this->Session->destroy();
}
else
{
    //Récupération de l'utilisateur et test si son compte est actif
    $user = $this->User->findById_user($this->Auth->user()'id_user']);
    if(!$user'User']'status_user'])
    {
        //Suppression de la session et donc deconnexion forcé de l'utilisateur si son compte est inactif
        $this->Session->destroy();
    }
}
$this->set('authUser',$this->Auth->user());

Voilà , j'espere que cela va t'aider ;)

Cordialement ,

Jeremy