Iniciar sesión con enlaces mágicos en Laravel

Un enlace mágico es un enlace temporal que permite iniciar sesión como un usuario sin contraseña. Veamos cómo usarlos en nuestra aplicación Laravel

Iniciar sesión con enlaces mágicos en Laravel
Photo by Aziz Acharki / Unsplash

En un futuro passwordless, una de las formas en las que probablemente podamos iniciar sesión será a través de los enlaces mágicos.

¿Qué es un enlace mágico?

Un enlace mágico es un enlace temporal que permite iniciar sesión como un usuario sin contraseña.

¿Cómo usar enlaces mágicos en Laravel?

En este caso, podemos usar esta librería:

En primer lugar, tenemos que instalar la librería:

composer require grosv/laravel-passwordless-login

Una vez instalada, vamos al controlador que queremos usar para enviar el link y añadimos un código como este:

use App\Models\User;
use Grosv\LaravelPasswordlessLogin\PasswordlessLogin;

// ...

function sendLoginLink()
{
    $user = User::findOrFail(1);
    $url = PasswordlessLogin::forUser($user)->generate();

    // Enviar un email al usuario con la $url
}

¿Cómo funcionan los enlaces mágicos?

En realidad es bastante sencillo. La URL contiene un identificador de usuario, ya sea un hash, un token, el ID o el email del usuario. Al acceder a esta URL, deberíamos de loguear al usuario.

Por último, para añadir una capa extra de protección, podemos usar las URLs firmadas de Laravel. Estas URLs firmadas prevén que un atacante modifique algún parámetro para intentar acceder, por ejemplo, como otro usuario.