Wie logge ich alle aktiven Benutzer aus?

15

Anstatt meine Site in den "Wartungsmodus" zu versetzen, möchte ich sie in einen vollständigen "Nur-Lese-Modus" versetzen. Es gibt ein Modul dafür, das jedoch nur das "Hinzufügen und Bearbeiten von Knoten" verhindert. Ich möchte verhindern, dass alle Benutzeraktivitäten, einschließlich der Anmeldung und Registrierung, die Website grundsätzlich aus dem (Lack-) Cache bedienen. Als Nebeneffekt würde ich diese Art von "Nur-Lese-Modus" verwenden, wenn die Site mit Anfragen überflutet wird.

Meine Frage: Wie kann ich alle aktiven Benutzer abmelden? Den Login und die Registrierungen kann ich dann mit einem Haken umleiten.

uwe
quelle

Antworten:

13

Soweit ich weiß, können Sie die Sitzungstabelle leeren und alle Benutzer werden abgemeldet. Abhängig von den installierten Modulen kann jedoch ein Problem auftreten. Beispielsweise werden Module, die implementiert hook_user_logout()werden, niemals ihre Aktionen ausgelöst, was ein Problem sein könnte. Stellen Sie sicher, dass keines Ihrer installierten Module diesen Hook implementiert.

F1234k
quelle
4
Wie @ F1234k sagte, wird beim Löschen der Sitzungstabelle nie hook_user_logout () ausgelöst. Aber du könntest es einfach selbst auslösen. Wählen Sie alle Benutzer-IDs aus der Sitzungstabelle aus und führen Sie dann für jede die Anweisung `module_invoke_all ('user_logout', $ user);` aus. Sie können jedoch nach denen filtern, deren Sitzung länger als 1 Stunde geöffnet war (Sitzungen in Drupal können unbegrenzt aktiviert bleiben).
Alexandru Savin
Vielen Dank. Ich muss die Logout-Hooks auslösen, ansonsten erhalte ich einen WSOD für Benutzer, die mit dem Modul "Persistent Login" angemeldet sind.
uwe
13

Sie können die Sitzungstabelle mit drush leeren

drush sqlq "TRUNCATE sessions"

oder wenn Sie Präfixe für Tabellennamen gesetzt haben:

drush sqlq --db-prefix "TRUNCATE {sessions}"
Batigolix
quelle
0

Sie können die Abmeldung aller Benutzer über einen Update-Hook erzwingen:

/**
 * Force to logout all the users.
 */
function mymodule_update_7001() {
  db_truncate('sessions')->execute();
}
milkovsky
quelle
0

Verwenden Sie das Force Logout-Modul .

Eigenschaften

  • Einstellungsformular, in dem Sie aktivieren und deaktivieren können (Abmelden erzwingen).
  • Berechtigung, damit Sie einige Benutzerrollen ausschließen können, wenn Sie beispielsweise den Administrator ausschließen möchten.
Saud Alfadhli
quelle