Esta aplicación demuestra cómo utilizar Server Actions de Next.js para manejar cookies de forma segura y eficiente.
- ✅ Crear cookies con configuración personalizada
- ✅ Leer cookies desde el servidor
- ✅ Eliminar cookies de forma segura
- ✅ Cookies httpOnly para mayor seguridad
- ✅ Revalidación automática de la página
- ✅ Interfaz intuitiva con feedback visual
``` ┌─────────────────────────────────────┐ │ Server Component (page.tsx) │ │ - Lee cookies en el servidor │ │ - Pasa datos como props │ └──────────────┬──────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ Client Component (cookie-manager) │ │ - Interfaz interactiva │ │ - Llama a Server Actions │ └──────────────┬──────────────────────┘ │ ▼ ┌─────────────────────────────────────┐ │ Server Actions (cookie-actions) │ │ - Operaciones seguras en servidor│ │ - Revalidación automática │ └─────────────────────────────────────┘ ```
``` app/ ├── actions/ │ └── cookie-actions.ts # Server Actions para cookies ├── page.tsx # Página principal (Server Component) components/ └── cookie-manager.tsx # Componente cliente interactivo ```
Crea una nueva cookie con las siguientes opciones:
- httpOnly:
true- Protección contra XSS - path:
/- Disponible en toda la app - maxAge: 7 días - Expiración automática
```typescript await setCookie("theme", "dark") ```
Lee el valor de una cookie específica:
```typescript const theme = await getCookie("theme") // Retorna: "dark" o null ```
Elimina una cookie del navegador:
```typescript await deleteCookie("theme") ```
Obtiene todas las cookies disponibles:
```typescript const cookies = await getAllCookies() // Retorna: [{ name: "theme", value: "dark" }, ...] ```
Las cookies se configuran con httpOnly: true, lo que significa:
- ✅ No son accesibles desde JavaScript del cliente
- ✅ Protección contra ataques XSS
- ✅ Solo el servidor puede leer/modificar las cookies
Todas las operaciones se ejecutan en el servidor:
- ✅ No se expone lógica sensible al cliente
- ✅ Validación en el servidor
- ✅ Mayor control sobre las operaciones
```typescript // app/page.tsx const cookies = await getAllCookies() return ```
```typescript // components/cookie-manager.tsx const handleSetCookie = async () => { await setCookie(cookieName, cookieValue) // La página se revalida automáticamente } ```
```typescript // app/actions/cookie-actions.ts export async function setCookie(name: string, value: string) { cookieStore.set({ name, value, httpOnly: true }) revalidatePath("/") // ← Actualiza la página automáticamente } ```
```typescript await setCookie("theme", "dark") await setCookie("language", "es") await setCookie("fontSize", "large") ```
```typescript await setCookie("session_token", "abc123...") await setCookie("user_id", "12345") ```
```typescript await setCookie("sidebar_collapsed", "true") await setCookie("notifications_enabled", "false") ```
- Seguridad: Las cookies se manejan en el servidor
- Rendimiento: Menos JavaScript en el cliente
- Sincronización: Revalidación automática de datos
- Simplicidad: No necesitas gestionar estado complejo
- Type-safe: TypeScript en todo el flujo
- Next.js 16 - Framework React con App Router
- TypeScript - Tipado estático
- Tailwind CSS - Estilos utilitarios
- shadcn/ui - Componentes de UI
- Server Actions - Mutaciones del servidor
Desarrollado como ejemplo educativo de Server Actions en Next.js 🚀