Punto de Finalización de API Autenticado
🔐 Punto de Finalización de API Autenticado
Sección titulada «🔐 Punto de Finalización de API Autenticado»En este ejemplo, aprenderás a proteger una ruta de API utilizando un middleware de autenticación personalizado. Esto es útil para asegurar puntos finales que requieren tokens, claves de API o cabeceras de sesión.
🧱 Estructura del Proyecto
Sección titulada «🧱 Estructura del Proyecto»authenticated-api/├── CMakeLists.txt├── src/│ ├── main.cpp│ └── middleware/│ └── auth.cpp└── include/ └── middleware/ └── auth.hpp
📄 CMakeLists.txt
Sección titulada «📄 CMakeLists.txt»cmake_minimum_required(VERSION 3.16)project(authenticated_api)
set(CMAKE_CXX_STANDARD 20)
include(FetchContent)
FetchContent_Declare(zunoGIT_REPOSITORY https://github.com/ZunoFramework/zuno.gitGIT_TAG main)
FetchContent_MakeAvailable(zuno)
include_directories(include)
add_executable(authenticated-apisrc/main.cppsrc/middleware/auth.cpp)
target_link_libraries(authenticated-api PRIVATE zuno)
📄 src/main.cpp
Sección titulada «📄 src/main.cpp»#include <zuno/zuno.hpp>#include "middleware/auth.hpp"
int main() {zuno::App app;
app.get("/public", [](auto& req, auto& res) { res.send("Esta es una ruta pública.");});
app.get("/private", authMiddleware, [](auto& req, auto& res) { res.send("Acceso concedido a datos privados.");});
app.listen(3000);}
📄 src/middleware/auth.cpp
Sección titulada «📄 src/middleware/auth.cpp»#include <zuno/zuno.hpp>#include "middleware/auth.hpp"
Middleware authMiddleware = [](auto& req, auto& res, Next next) {auto auth = req.headers["Authorization"];
if (auth != "Bearer secret-token") { res.status(401).send("No autorizado"); return;}
next(); // Continuar con el manejador de ruta};
📄 include/middleware/auth.hpp
Sección titulada «📄 include/middleware/auth.hpp»#pragma once#include <zuno/zuno.hpp>
extern Middleware authMiddleware;
🧪 Prueba la API
Sección titulada «🧪 Prueba la API»curl http://localhost:3000/public# → Esta es una ruta pública.
curl http://localhost:3000/private# → No autorizado
curl -H "Authorization: Bearer secret-token" http://localhost:3000/private# → Acceso concedido a datos privados.
🧭 ¿Qué viene después?
Sección titulada «🧭 ¿Qué viene después?»- Añadir Limitación de Tasa para proteger puntos finales de inicio de sesión.
- Usar TLS para cifrar credenciales.
- Devolver respuestas de error en JSON para consistencia.
Zuno facilita la protección de tus puntos finales con middleware limpio y modular — como cualquier framework moderno debería hacerlo.