Saltearse al contenido

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.


authenticated-api/
├── CMakeLists.txt
├── src/
│ ├── main.cpp
│ └── middleware/
│ └── auth.cpp
└── include/
└── middleware/
└── auth.hpp

cmake_minimum_required(VERSION 3.16)
project(authenticated_api)
set(CMAKE_CXX_STANDARD 20)
include(FetchContent)
FetchContent_Declare(
zuno
GIT_REPOSITORY https://github.com/ZunoFramework/zuno.git
GIT_TAG main
)
FetchContent_MakeAvailable(zuno)
include_directories(include)
add_executable(authenticated-api
src/main.cpp
src/middleware/auth.cpp
)
target_link_libraries(authenticated-api PRIVATE zuno)

#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);
}

#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
};

#pragma once
#include <zuno/zuno.hpp>
extern Middleware authMiddleware;

Terminal window
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.

  • 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.