No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de API REST con Laravel

Curso de API REST con Laravel

Profesor Italo Morales F

Profesor Italo Morales F

Configuración de Login Manual en API con Autenticación de Usuarios

16/18
Recursos

¿Cómo concluir el acceso a un sistema mediante autenticación?

Al configurar la autenticación de un sistema, culminar este proceso correctamente es esencial para proporcionar acceso seguro a sus usuarios. Aquí abordaremos la configuración final de un sistema de autenticación basado en tokens, utilizando un patrón API y asegurando su integración en una aplicación web o móvil.

¿Cómo funciona el método manual de autenticación?

Para implementar este método, es necesario configurar el proceso de inicio de sesión manualmente mediante la utilización de un controlador que verificarán las credenciales del usuario (correo y contraseña). Este proceso sigue las siguientes etapas:

  1. Invocación del modelo de usuario: Se utiliza la clase de autenticación del framework. Esta permite verificar si las credenciales proporcionadas por el usuario coinciden con algún registro de la base de datos.
  2. Validación de credenciales: Se comprueba que el correo electrónico y la contraseña sean correctos. Si la autenticación es exitosa, el sistema retorna un true; de lo contrario, un false.
  3. Generación de tokens: En caso de que las credenciales sean válidas, se genera un token de sesión que se asocia al usuario y al dispositivo desde el cual se está conectando. Este token se utiliza para futuros accesos a las rutas protegidas del sistema.

¿Qué sucede si la autenticación falla?

Cuando la autenticación no es exitosa, el sistema debe manejar el error adecuadamente para comunicar al usuario cuál es el problema. Este manejo se realiza de la siguiente manera:

  • Respuesta de error: Si la autenticación falla, el sistema devuelve una respuesta JSON con un mensaje de "No está autorizado" y un código de estado 401.
  • Retroalimentación al usuario: Es importante explicar al usuario que sus credenciales son incorrectas o que es necesario completar ciertos campos para continuar el proceso.

¿Cómo podemos validar y probar la configuración de login?

Para verificar si el sistema de login está configurado correctamente, se recomienda probar usando herramientas como Postman. El proceso de prueba incluye los siguientes pasos:

  1. Configuración de la ruta en Postman: Seleccionar el método HTTP apropiado (POST) y establecer la ruta hacia la API de login.
  2. Envío de credenciales: Probar con diferentes combinaciones de credenciales para verificar que los resultados sean los esperados. También es importante usar datos falsos para simular distintos escenarios.
  3. Inspección de respuestas: Al enviar credenciales correctas, debe generarse un token y retornarse con un mensaje de éxito. En caso contrario, debe recibirse un mensaje de error con el código 401.
  4. Pruebas con tokens y autenticación de rutas: Luego de recibir el token, realizar pruebas con otras rutas protegidas para asegurar que sólo se acceda con un token válido.

Este enfoque asegura una implementación segura y funcional de la autenticación en un sistema. Motiva a los desarrolladores a seguir perfeccionando sus métodos de acceso y los anima a experimentar más con distintas configuraciones y herramientas para optimizar sus sistemas.

Aportes 12

Preguntas 12

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Lo que me encanta de esto es que prácticamente ya está todo hecho, nosotros solo tenemos que implementarlo 😄 La autenticación basada en tokens básicamente es mandarle ese token al servidor, el servidor lo valida y te regresa una respuesta, y así en cada solicitud, aquí ya no hay sesiones tal cual, por eso el token tiene una duración (o al menos es recomendable que tenga una duración) 😄

Aun así, me pregunto cómo se haría esta validación con un sistema distribuido 🤔

Para que se guarde automaticamente el token en una variable dentro de un entorno de Postman, podemos utilizaar el siguente codigo en la solapa test de postman, esto en la ruta donde hacemos el login:

pm.test("Response should contains Token", function() {
    pm.response.to.have.jsonBody("token");
    var json = JSON.parse(responseBody)
    postman.setEnvironmentVariable("token", `${json.token}`)
})```

Luego en la ruta de la consulta, donde ingresamos el token ponemos:

Bearer {{token}}


Lo que hace el primer codigo es guardar automanticamente el valor del token obtenido por el login, para no estar copiando y pegando, esto agiliza a la hora de desarollar.

Les comparto el código del archivo,
App\Http\Controllers\Api\LoginController.php

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

use App\Models\User;
use Illuminate\Support\Facades\Auth;

class LoginController extends Controller
{
  // Metodo que recibe el formulario
  public function login(Request $request)
  {
    $this->validateLogin($request);

    if (Auth::attempt($request->only('email', 'password'))) {
      return response()->json([
        'token' => $request->user()->createToken($request->name)->plainTextToken,
        'message' => 'Success'
      ]);
    }

    return response()->json([
      'message' => 'Unauthorized'
    ], 401);
  }

  // Metodo que verifica que llegue la informacion correctamente
  public function validateLogin(Request $request)
  {
    return $request->validate([
      'email' => 'required|email',
      'password' => 'required',
      'name' => 'required'
    ]);
  }
}

A mi no me autenticaba, lo resolví utilizando una variable de por medio:

$credentials = request(['email', 'password']);

    if(Auth::attempt($credentials)){
	...
}

Por si le sive a alguien

Como haría si necesito que la persona me pase esos datos para el login, y que mediante esto, Laravel procese ese token devolviendo lo que el usuario quiere ver.

Es decir, que no tenga el usuario que ir a copiar ese token si no que Laravel ya procese la solicitud. Y pues claro, en la respuesta que le de Laravel devolver el token también

Cuando llegué a este punto me informaba que no encontraba la tabla ‘personal_access_tokens’ busqué y en la documentación me dice que hay que publicar el ‘SanctumServiceProvider’ luego de instalar sanctum y realizar la migracion que crea.
https://laravel.com/docs/8.x/sanctum

por qué no hacer el login con breeze??

A la fecha (07/2023), intente utilizar PostmanVscode y no funciona con los token preferentemente usen la aplicacion como tal de Postman

login

Para aquellos que quieran implementar su autenticación les recomiendo leer en la documentación oficial Mobile Application Authentication .

Pueden hacer las pruebas con postman enviando el token que generen en:

/api/sanctum/token

Recuerden agregar que la respuesta del servidor sea un json en las cabeceras.

Y en auth tienen que usar Bearer Token.
Saludos!.

se puede decir que es identico que usar passport, solo que sanctum no usa oauth

tengo que consumir la api de webex de cisco no lo logro :(