🔐 Autenticación en Shop API¶
La autenticación en Shop API se basa en el uso de JSON Web Tokens (JWT) para asegurar que solo los usuarios autorizados puedan acceder a ciertos recursos y realizar acciones específicas. Además, implementamos un sistema de roles para controlar el acceso según el nivel de permisos.
⚙️ ¿Qué es JWT y por qué lo usamos?¶
JWT (JSON Web Token) es un formato seguro y compacto para transmitir información entre partes, firmado digitalmente para evitar manipulaciones.
Lo usamos para:
- Autenticar quién eres.
 - Autorizar qué puedes hacer según tu rol.
 
🛡️ Roles de usuario¶
| Rol | Descripción | Ícono | 
|---|---|---|
| Admin | Acceso total a todos los recursos y acciones. | 🔑 | 
| User | Acceso limitado a sus propios recursos, como sus pedidos. | 👤 | 
📜 Flujo básico de autenticación¶
- Registro de usuario: 
POST /api/auth/register - Inicio de sesión: 
POST /api/auth/loginpara obtener el token JWT. - Enviar el token en el header 
Authorization: Bearer <token>en cada solicitud a rutas protegidas. - Verificación del token en el backend para validar acceso.
 
📑 Endpoints de autenticación¶
Estos son los principales endpoints relacionados con la autenticación:
🚀 ¿Como registrarse?¶
POST /api/auth/register
Content-Type: application/json
{
  "name": "Nuevo Usuario",
  "email": "nuevo@ejemplo.com",
  "password": "tu_contraseña"
}
Ejemplo de respuesta exitosa¶
HTTP/1.1 201 Created
Content-Type: application/json
{
  "message": "Usuario registrado exitosamente"
}
📝 ¿Como obtener un token?¶
POST /api/auth/login
Content-Type: application/json
{
  "email": "usuario@ejemplo.com",
  "password": "tu_contraseña"
}
Ejemplo de respuesta exitosa¶
HTTP/1.1 200 OK
Content-Type: application/json
{
  "token": "<token_jwt>"
}
📜 ¿Como hago uso del token?¶
GET /api/products
Authorization: Bearer <token_jwt>
HTTP/1.1 200 OK
Content-Type: application/json
{
  "products": [
    {
      "id": 1,
      "name": "Producto 1",
      "price": 100
    },
    {
      "id": 2,
      "name": "Producto 2",
      "price": 200
    }
  ]
}
🖥️ Uso del token en el frontend¶
Para utilizar el token JWT en el frontend, sigue estos pasos:
- Almacena el token: Guarda el token JWT en el almacenamiento local o en una cookie segura después de iniciar sesión.
 - Incluye el token en las solicitudes: Agrega el token en el encabezado 
Authorizationde cada solicitud a las rutas protegidas. 
Ejemplo usando fetch:
const token = localStorage.getItem('token');
fetch('/api/products', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${token}`
  }
})
  .then(response => response.json())
  .then(data => console.log(data));
⚠️ Notas importantes¶
- Asegúrate de mantener tu token JWT en un lugar seguro y no compartirlo.
 - Los tokens tienen una fecha de expiración, así que maneja adecuadamente la renovación de tokens.
 - Si encuentras algún problema con la autenticación, verifica tus credenciales y el estado de tu token.
 
🔐 Conoce más¶
Para obtener más información sobre la autenticación y otros temas relacionados, consulta los siguientes recursos: