Enlace de cierre de sesión directo

14

Sé que puedo mostrar el formulario de inicio / cierre de sesión con el siguiente enlace:

http://example.com/index.php?option=com_users&view=login

Pero una vez que haya iniciado sesión, este enlace redirigirá al usuario a una página con un botón para cerrar sesión en el que se debe hacer clic.

¿Es posible crear un enlace que cierre la sesión del usuario actual directamente?

johanpw
fuente

Respuestas:

24

El siguiente enlace es para cerrar sesión directamente:

http://example.com/index.php?option=com_users&task=user.logout

Pero se requiere un token de usuario para evitar un mensaje de error Invalid Token, y se requiere algo de magia PHP para obtener el token. El siguiente código mostrará un Loginenlace a los invitados y un Logout Usernameenlace directo a los usuarios registrados:

$user = JFactory::getUser();
if ($user->guest)
{
    echo '<a href="index.php?option=com_users&view=login">Login</a>';
}
else
{
    $userToken = JSession::getFormToken();
    echo '<a href="index.php?option=com_users&task=user.logout&' . $userToken . '=1">Logout '  . $user->username . '</a>.';
}

El código se puede incluir en cualquier extensión, o usando un complemento / módulo que permita insertar código PHP directamente (por ejemplo , DirectPHP , Custom HTML Advanced , Sourcerer o similar).

johanpw
fuente
1
Jaja, demasiado obvio ...? Lo siento por eso. Sin embargo, para ser justos, encuentro el fragmento de código bastante útil, y lo uso todo el tiempo en los sitios web de los clientes para tener un pequeño enlace de inicio de sesión no intrusivo en el pie de página. Simplemente no estaba seguro de qué preguntar para publicar el código.
johanpw
+1 ¡Muy útil! ¿Cómo puede hacer una redirección a una página específica después? ¿hay alguno &additional_parameterque pueda usarse para permitir una redirección después de cerrar sesión?
Gruber
Hola, gracias por esto! ¿Puede proporcionar alguna documentación donde esto se explica un poco más en detalle? ¡Gracias!
Gruber
6

Como respuesta final, Joomla tiene un elemento de menú integrado "Cerrar sesión", agregado al núcleo, creo que alrededor de 3.4 * tal vez 3.5. Entonces ahora no necesita ningún complemento adicional.

El elemento del menú de cierre de sesión también permite una redirección al cerrar sesión.

Además, si configura el elemento del menú Inicio de sesión en el acceso 'Invitado' y el elemento del menú Cerrar sesión en el acceso 'Registrado', el menú cambia según su estado.

Respuesta SE detallada aquí: Cambiar Iniciar sesión para Cerrar sesión

BodgeIT
fuente
Este es probablemente el mejor enfoque para sitios web que utilizan una versión actualizada de Joomla, ya que solo utiliza las funcionalidades principales de Joomla. Sin embargo, si realmente necesita crear un enlace de cierre de sesión mediante programación, la "respuesta aceptada" es una buena solución.
feculededentier
4

Como tercera opción, hay un cierre de sesión rápido componente de cierre de que agrega un elemento de menú de cierre de sesión directo en Joomla y cerrará la sesión de los usuarios sin la confirmación.

También proporciona la opción de configurar la redirección a la página deseada después de cerrar sesión.

FFrewin
fuente