Skip to main content

Storage

Sistema de almacenamiento adaptable para persistir datos de autenticación.

Visión General

El SDK proporciona un sistema de almacenamiento flexible que se adapta automáticamente al entorno:
  • Navegador: Usa localStorage o sessionStorage
  • Node.js: Usa almacenamiento en memoria
  • Testing: Permite mocks personalizados

Uso Básico

import { createAuthStorage } from 'camarauth-sdk';

const storage = createAuthStorage();

// Guardar datos
await storage.save({
  token: 'jwt-token',
  refreshToken: 'refresh-token',
  user: { id: '123', name: 'Juan' }
});

// Cargar datos
const data = await storage.load();

// Limpiar datos
await storage.clear();

Detección Automática

El SDK detecta automáticamente el mejor storage disponible:
// En navegador con localStorage disponible
const storage = createAuthStorage();
// Usa localStorage

// En navegador sin localStorage
const storage = createAuthStorage();
// Usa sessionStorage

// En Node.js o SSR
const storage = createAuthStorage();
// Usa MemoryStorage

Configuración Personalizada

const storage = createAuthStorage({
  key: 'mi-app-auth',           // Clave personalizada
  storage: customStorage,       // Storage personalizado
  serialize: (data) => JSON.stringify(data),
  deserialize: (raw) => JSON.parse(raw)
});

Storage Adapter

Puedes crear tu propio adaptador:
import { StorageAdapter } from 'camarauth-sdk';

const customAdapter: StorageAdapter = {
  getItem: async (key) => {
    // Implementación personalizada
    return value;
  },
  setItem: async (key, value) => {
    // Implementación personalizada
  },
  removeItem: async (key) => {
    // Implementación personalizada
  }
};

const storage = createAuthStorage({
  storage: customAdapter
});

Métodos

MétodoDescripción
save(data)Guarda datos de autenticación
load()Carga datos de autenticación
clear()Elimina todos los datos
exists()Verifica si hay datos guardados
getKey()Obtiene la clave de storage

Seguridad

No almacenes tokens en localStorage en producción si tu aplicación es vulnerable a XSS. Considera usar httpOnly cookies o memory storage con refresh tokens.
// Opción segura: Memory + Refresh Token
const storage = createAuthStorage({
  storage: createMemoryStorage()
});

// El token se mantiene solo en memoria
// Se usa refresh token para renovar la sesión