Auf unserer Website haben wir Kundenkonten mit jeweils einem Superadministrator und Unterbenutzern, die zu diesem Konto gehören.
Wir möchten, dass der Superadministrator Unterbenutzer zum Abmelden zwingen kann. Wie kann die Sitzung eines Benutzers in Drupal am besten zerstört werden, unabhängig davon, ob die Sitzungsinformationen in Redis, Memcache oder in der Datenbank gespeichert sind?
Bevor sich jemand versucht fühlt, user_logout () vorzuschlagen, wird die Sitzung des aktuellen Benutzers zerstört . Ich möchte, dass der aktuelle Benutzer die Sitzung eines anderen Benutzers zerstören kann !
hook_mail_alter()
diese E-Mail wahrscheinlich abfangen und unterdrücken.Antworten:
drupal_session_destroy_uid()
klingt nach einer sicheren Wette:Die Kernimplementierung löscht die Datenbank wie erwartet, aber jedes Modul, das session.inc überschreibt und keine funktionierende Implementierung dieser Funktion bietet, wird sicherlich als fehlerhaft angesehen (wie
user_delete_multiple()
und andere Funktionen es benötigen).Theoretisch sollten Sie diese Funktion also unabhängig vom Speicher verwenden können.
quelle
Der Sitzungsproxy bietet einen generischen Ersatz für die Sitzungsbehandlung von Drupal, die mit verschiedenen Backends funktionieren soll.
Als solches implementiert es auch
drupal_session_destroy_uid()
.Beachten Sie, dass die Sitzungsimplementierung der Memcache-API und -Integration als instabil angesehen wird und dass der Betreuer von Redis die Verwendung des Sitzungsproxys empfiehlt .
Die Probleme bei der konsistenten Behandlung von Sitzungen über verschiedene Backends hinweg sind in Ausgabe 1260634 beschrieben .
quelle
In Drupal 7 können wir einen Benutzer abmelden, wenn wir seine Benutzer-ID mit db_delete () haben:
quelle