¿Cómo cerrar sesión en todos los usuarios activos?

15

En lugar de poner mi sitio en "modo de mantenimiento", me gustaría ponerlo en un completo "modo de solo lectura". Hay un módulo para eso, sin embargo, solo evita "agregar y editar nodos". Me gustaría evitar que toda la actividad del usuario, incluido el inicio de sesión y el registro, básicamente haga que el sitio reciba servicio del caché (barniz). Como beneficio adicional, usaría este tipo de "modo de solo lectura" si el sitio se inunda de solicitudes.

Mi pregunta: ¿cómo puedo cerrar sesión en todos los usuarios activos? El inicio de sesión y los registros que puedo redirigir con un gancho.

uwe
fuente

Respuestas:

13

Hasta donde sé, puede vaciar la tabla de sesiones y todos los usuarios cerrarán sesión. Sin embargo, puede haber un problema, dependiendo de los módulos que haya instalado. Por ejemplo, los módulos que implementan hook_user_logout()nunca dispararán sus acciones, lo que podría ser un problema. Verifique para asegurarse de que ninguno de sus módulos instalados esté implementando este enlace.

F1234k
fuente
44
Como dijo @ F1234k, al eliminar la tabla de sesión nunca se activará hook_user_logout (). Pero, podrías desencadenarlo tú mismo. Seleccione todos los uid de la tabla de sesiones y luego ejecute `module_invoke_all ('user_logout', $ user);` para cada uno de ellos. Sin embargo, puede filtrar por los que tienen su sesión abierta durante más de 1 hora (las sesiones en Drupal pueden permanecer habilitadas sin límites).
Alexandru Savin
Gracias. Tendré que disparar los ganchos de cierre de sesión; de lo contrario, obtendré un WSOD para los usuarios que hayan iniciado sesión con el módulo "inicio de sesión persistente".
Uwe
13

Puedes vaciar la tabla de sesiones usando drush

drush sqlq "TRUNCATE sessions"

o si ha establecido prefijos para nombres de tablas:

drush sqlq --db-prefix "TRUNCATE {sessions}"
batigolix
fuente
0

Puede forzar el cierre de sesión de todos los usuarios a través de un enlace de actualización:

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

Usar el módulo Force Logout .

Caracteristicas

  • Formulario de configuración donde puede habilitar y deshabilitar (Forzar cierre de sesión).
  • Permiso para que pueda excluir algunas funciones de usuario si desea excluir al administrador, por ejemplo.
Saud Alfadhli
fuente