Saltar al contenido

Cómo cerrar la sesión de un usuario de la API usando laravel Passport

Después de mucho luchar ya encontramos la contestación de esta contrariedad que muchos lectores de esta web han tenido. Si quieres aportar algún detalle puedes compartir tu conocimiento.

Solución:

Asegúrate de que en User modelo, tienes este importado

use LaravelPassportHasApiTokens;

y estás usando el rasgo HasApiTokens utilizando

use HasApiTokens

dentro de la clase de usuario. Ahora crea la ruta de cierre de sesión y en el controlador, haga esto

$user = Auth::user()->token();
$user->revoke();
return 'logged out'; // modify as per your need

Esto cerrará la sesión del usuario del dispositivo actual en el que solicitó cerrar sesión. Si desea cerrar sesión en todos los dispositivos en los que ha iniciado sesión, haga esto en su lugar

DB::table('oauth_access_tokens')
        ->where('user_id', Auth::user()->id)
        ->update([
            'revoked' => true
        ]);

Esto cerrará la sesión del usuario en todas partes. Esto realmente ayuda cuando el usuario cambia su contraseña usando la opción restablecer contraseña u olvidar la contraseña y tiene que cerrar la sesión del usuario desde cualquier lugar.

Debe eliminar el token de la tabla de la base de datos. oauth_access_tokens
puedes hacerlo creando un nuevo modelo como OauthAccessToken

  1. Ejecute el comando php artisan make:model OauthAccessToken para crear el modelo.

  2. Luego crea una relación entre el User modelo y el nuevo creado OauthAccessToken modelo, en User.php agregar :

    public function AauthAcessToken()
        return $this->hasMany('AppOauthAccessToken');
    
    
  3. en UserController.php, cree una nueva función para cerrar sesión:

    public function logoutApi()
     
        if (Auth::check()) 
           Auth::user()->AauthAcessToken()->delete();
        
    
    
  4. En el enrutador api.php, cree una nueva ruta:

     Route::post('logout','[email protected]');
    
  5. Ahora puede cerrar sesión llamando a publicar en URL /api/logout

Este es el código de muestra que utilizo para cerrar la sesión

public function logout(Request $request)

    $request->user()->token()->revoke();
    return response()->json([
        'message' => 'Successfully logged out'
    ]);

Sección de Reseñas y Valoraciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *