Cómo omitir a un usuario en un marco Laravel para un desarrollador, para que el desarrollador pueda iniciar sesión en otro usuario

En primer lugar, sugeriría que no utilice el controlador de autenticación central desarrollado por Tylor si tiene una versión 5.1 o inferior. Si está utilizando Laravel 5.2+, entonces seguro que laravel ha mejorado mucho en su controlador de autenticación y ya no necesita leer mi respuesta.

Pero, para Laravel 5.1 o inferior:

Use el paquete Centinela / Centinela.

La idea detrás del uso del paquete externo es tener mucha más funcionalidad que solo autenticación.

Consiste en

Usuario y permisos

Roles que pueden vincularse a un grupo de permisos.

Aceleración para evitar cualquier tipo de ataque DDoS o ataque de fuerza bruta en su servidor.

Ahora, llegando a tu pregunta:

$ user = App \ User :: find (1);

Simplemente puede hacer Sentinel :: login ($ user);

Esta es una idea básica, pero ahora si quieres desarrollar esto en producción. Aquí va el código.

En el lado Administrador / Desarrollador, cree una función, agregue una ruta y escriba el siguiente código:

Session :: put (‘old_user_id’, Sentinel :: getUser () -> id);

$ user = Sentinel :: getUserRepository () -> createModel () -> find ($ userId);

Sentinel :: login ($ usuario);

return redirect () -> route (‘home’) -> withSuccess (‘Ha iniciado sesión en’. $ user-> fullName (). ‘\’ s account. ‘);

Este código es el que almacena la ID de usuario actual en la variable de sesión e inicia sesión en la ID de otro usuario.

Ahora, volviendo a la cuenta real, puede modificar su código de cierre de sesión como:

$ usuario = Centinela :: getUser ();

// Cerrar sesión del usuario

Sentry :: logout ();

if (Session :: has (‘old_user_id’) y Session :: get (‘old_user_id’)! = $ user-> id) {

$ user = Sentry :: getUserRepository () -> createModel () -> find (Session :: get (‘old_user_id’));

Sentry :: login ($ usuario);

return redirect () -> route (‘admin’) -> withSuccess (‘Bienvenido de nuevo a la cuenta de administrador’);

}

Para explicar el código anterior, básicamente cierra la sesión del usuario actual y verifica si la sesión tiene una ID de usuario anterior, y si es así, vuelva a iniciar sesión en la cuenta anterior.

PD: Siéntase libre de cambiar el código para usar clases nativas, pero como prefiero usar Sentry / Sentinel, tengo código escrito usando esas clases.

¡Espero que esto te ayude!

No estoy seguro de cómo usaría Laravel para hacer esto, pero cómo manejo dos inicios de sesión al mismo tiempo es usando el modo de incógnito de cromo: ctrl + shift + n. Aunque solo funciona para un inicio de sesión adicional. Descubrí que no podía abrir una segunda pestaña de incógnito e iniciar sesión en un tercer usuario.

Podría ser tan simple como esto

$ user = User :: find ($ userId)

Auth :: login ($ usuario);