Sur notre site, nous avons des comptes clients, chacun avec un super administrateur et des sous-utilisateurs appartenant à ce compte.
Nous voulons que le super administrateur puisse forcer les sous-utilisateurs à se déconnecter. Quelle est la meilleure façon de détruire la session d'un utilisateur dans Drupal qui fonctionne, que les informations de session soient stockées dans Redis, Memcache ou la base de données?
Avant que quelqu'un ne soit tenté de suggérer user_logout (), cela détruit la session de l'utilisateur actuel . Je veux que l'utilisateur actuel puisse détruire la session d' un autre utilisateur!
hook_mail_alter()
pour intercepter cet e-mail et le supprimer.Réponses:
drupal_session_destroy_uid()
sonne comme une valeur sûre:L'implémentation principale efface la base de données, comme vous vous en doutez, mais tout module qui remplace session.inc, et ne fournit pas une implémentation fonctionnelle de cette fonction, serait sûrement considéré comme rompu (car d'
user_delete_multiple()
autres fonctions en ont besoin).Donc, en théorie, vous devriez pouvoir utiliser cette fonction quel que soit le stockage.
la source
Le proxy de session fournit un remplacement générique pour la gestion de session de Drupal qui est censé fonctionner avec divers backends.
En tant que tel, il met également en œuvre
drupal_session_destroy_uid()
.Notez que l'implémentation de session de Memcache API and Integration est considérée comme instable et que le responsable de Redis recommande l'utilisation de Session Proxy .
Les problèmes de gestion cohérente des sessions sur différents backends sont décrits dans le problème 1260634 .
la source
Dans Drupal 7, nous pouvons déconnecter un utilisateur si nous avons son User_ID en utilisant db_delete ():
la source