Es fantástico que WordPress sea multiusuario pero ¿y si alguno se vuelve loco y quiere joderte la web?
Hay multitud de situaciones en las que puede que necesites forzar la desconexión de usuarios, y en cualquier caso, especialmente en entornos corporativos, sitios de comercio electrónico y, por qué no decirlo, para prevenir ataques y hackeos, puede no ser mala idea forzar la desconexión tras un determinado periodo de tiempo.
Por defecto, WordPress no desconectará a un usuario hasta que no expire la cookie de sesión, que dura lo siguiente:
- 48 horas
- Cuando cierras el navegador completamente
- 14 días si haces clic en la casilla de “Recuérdame”
Así que si quieres forzar la desconexión de los usuarios al cabo de un tiempo tendrás que tomar medidas.
Forzar la desconexión de usuarios con código
Un modo de “echar” a todos los usuarios, digamos, cada 4 horas, sería con un código como el siguiente, que deberás añadir a tu plugin de funciones o al archivo functions.php del tema activo:
function user_update_login($login) { // la función se activa cuando un usuario se conecta global $user_ID; $user = get_userdatabylogin($login); // guarda la hora a la que se conecta el usuario update_usermeta( $user->ID, 'last_login', time() ); } add_action('wp_login','user_update_login'); function check_time_limit() { get_currentuserinfo(); global $user_ID; // solo se ejecuta si el usuario aún está conectado if($user_ID) { // revisa la hora de la conexión $last_login = get_user_meta($user_ID, 'last_login', TRUE); // si se conectó hace más de 14400 segundos (4 horas) se desconecta al usuario if(time() > ($last_login + 14400)) { wp_logout(); } } } check_time_limit();
Otro modo de forzar la desconexión es con este otro código, más sencillo pero igual de efectivo:
add_filter('auth_cookie_expiration', 'wase_85171_expiry',10,3); function wase_85171_expiry($expiry, $user_id, $remember) { return 14400; // el tiempo que quieres que pase hasta que quieras que expire, en el ejemplo 14400 segundos (4 horas) }
En ambos casos estamos forzando la desconexión después del periodo de tiempo que especifiquemos en el código.
Forzar la desconexión de usuarios con plugin
Te aviso de antemano que los plugins que he encontrado para hacer lo mismo están bastante abandonados en su desarrollo, pero en mis pruebas aún funcionan. Si es tu opción puedes elegir alguno de estos para forzar la desconexión de los usuarios.
- Idle Logout: Te permite especificar el tiempo de expiración e incluso un mensaje a los usuarios.
- Configure Login Timeout: Puedes cambiar la expiración por defecto de WordPress, con clic en “Recuérdame” o no.
Un truco adicional que casi se me olvida es quitar la casilla “Recuérdame” de la pantalla de acceso de WordPress, con lo que fuerzas a que la cookie dure un máximo de 48 horas. Si te gusta puede ser una opción.
Si sabes algún modo más nos lo cuentas en los comentarios ¿vale?
Vía | AyudaWP