Saltar al contenido principal
Auth0 Universal Components se encuentra actualmente en acceso anticipado. Al usarlo, aceptas los términos aplicables de la prueba gratuita del Contrato maestro de suscripción de Okta. Para obtener más información, consulta Fases de lanzamiento del producto.
Auth0ComponentProvider es la capa de orquestación de Auth0 Universal Components. Los SDK de Auth0 administran sesiones y tokens, y Auth0ComponentProvider traduce ese estado de identidad en un contexto de interfaz de usuario funcional y alineado con la marca. Auth0ComponentProvider se asegura de que los componentes, como la inscripción en MFA, tengan los permisos, los datos en caché y los estilos necesarios.

Beneficios

Auth0ComponentProvider es el contenedor raíz obligatorio para todos los Auth0 Universal Components. Los beneficios de usar este contenedor son:
  • Alineación de identidad: Conecta los SDK de Auth0 con la My Account API para garantizar que las solicitudes se firmen con tokens con scope de usuario.
  • Optimización del rendimiento: Implementa una caché compartida de TanStack Query específicamente ajustada para flujos de identidad, lo que evita llamadas redundantes a la API y cambios bruscos en el diseño.
  • Consistencia del sistema de diseño: Propaga variables de Tailwind CSS y temas compatibles con Shadcn en todo el árbol de componentes.
  • Feedback global: Gestiona un sistema unificado de notificaciones toast para alertas de seguridad y el estado del flujo de trabajo.

Arquitectura de la integración

Anide Auth0ComponentProvider en su proveedor de autenticación (Auth0Provider). Esta configuración permite acceder al estado de autenticación y a los métodos de obtención de tokens necesarios para llamar a las API de Auth0.

Configurar Auth0ComponentProvider

App.tsx
import { Auth0Provider } from "@auth0/auth0-react";
import { Auth0ComponentProvider } from "@auth0/universal-components-react/spa";

function App() {
  return (
    <Auth0Provider
      domain="your-tenant.auth0.com"
      clientId="YOUR_CLIENT_ID"
      authorizationParams={{ redirect_uri: window.location.origin }}
      interactiveErrorHandler='popup' // Necesario para gestionar los desafíos de autenticación step-up mediante el popup de Universal Login
    >
      <Auth0ComponentProvider domain="your-tenant.auth0.com">
        {/* Tu aplicación con Auth0 Universal Components */}
      </Auth0ComponentProvider>
    </Auth0Provider>
  );
}

Propiedades

PropiedadTipoObligatorioDescripción
domainstringDominio del inquilino de Auth0 (“YOUR_AUTH0_TENANT.auth0.com”).
previewModebooleanNoCuando true, omite la inicialización del cliente de la API. Se usa para vistas previas de la documentación y demostraciones.
i18nI18nOptionsNoConfiguración de internacionalización, incluidos currentLanguage y fallbackLanguage.
themeSettingsThemeSettingsNoConfiguración del tema, incluido el modo (light/dark), la variante del tema (default/minimal/rounded) y las variables CSS.
toastSettingsToastSettingsNoConfiguración de las notificaciones toast, incluida la selección del proveedor (sonner/custom), la posición, la duración y los métodos toast personalizados.
cacheConfigQueryCacheConfigNoControla el almacenamiento en caché de TanStack Query (dos min de stale / cinco min de GC de forma predeterminada). Establece enabled: false para forzar datos actualizados.
loaderReact.ReactNodeNoComponente de carga personalizado que se muestra durante la inicialización de la autenticación.

Experiencia del usuario


i18nUtiliza las siguientes propiedades para adaptar los Universal Components al sistema de diseño y la configuración regional de tu aplicación.
PropiedadTipoObligatorioPredeterminadoDescripción
currentLanguagestring-Código del idioma actual (p. ej., “en”, “es”, “fr”)
fallbackLanguagestringNo”en”Código del idioma de respaldo cuando faltan traducciones

themeSettings
PropiedadTipoPredeterminadoDescripción
mode”light” | “dark""light”Modo de color del tema
theme”default” | “minimal” | “rounded""default”Variante del tema con distintos estilos
variablesStylingVariablesPropiedades personalizadas de CSS para los temas común, claro y oscuro
Común (se aplica a todos los temas):Tipografía:
  • --font-size-page-header
  • --font-size-page-description
  • --font-size-heading
  • --font-size-title
  • --font-size-subtitle
  • --font-size-body
  • --font-size-paragraph
  • --font-size-label
Radio de borde:
  • --radius-xs hasta --radius-9xl
Claro y oscuro (colores y sombras específicos del tema):Colores:
  • --background, --foreground
  • --card, --card-foreground
  • --primary, --primary-foreground
  • --secondary, --secondary-foreground
  • --accent, --accent-foreground
  • --muted, --muted-foreground
  • --destructive, --destructive-foreground
  • --popover, --popover-foreground
  • --input, --border, --ring
  • --color-page
  • --color-info, --color-info-foreground
  • --color-success, --color-success-foreground
  • --color-warning, --color-warning-foreground
  • --color-destructive-border
  • --color-popover-border
  • --color-input-foreground
  • --color-input-muted
Sombras:
  • --shadow-bevel-* (xs, sm, md, lg, xl, 2xl)
  • --shadow-button-* (reposo, hover, focus)
  • --shadow-button-destructive-*
  • --shadow-button-outlined-*
  • --shadow-input-* (reposo, hover, focus)
  • --shadow-input-destructive-*
  • --shadow-checkbox-* (reposo, hover)
  • --shadow-switch-* (reposo, hover, focus, thumb, thumb-dark)
Para ver ejemplos detallados de estilos y patrones de personalización, consulta Personaliza el estilo y los temas con Universal Components.

toastSettingsLa configuración de Toast admite dos tipos de proveedor: Sonner (predeterminado) o personalizado. Cada proveedor tiene su propia estructura de configuración para mayor seguridad de tipos.
PropiedadTipoPredeterminadoDescripción
provider"sonner""sonner"Usa la biblioteca integrada de toasts Sonner
settings.positionToastPosition"top-right"Posición en la que aparecen los toasts: “top-left”, “top-right”, “bottom-left”, “bottom-right”, “top-center”, “bottom-center”
settings.durationnumber4000Duración en milisegundos antes de que el toast se cierre automáticamente (valor predeterminado de Sonner)
settings.maxToastsnumber-Número máximo de toasts visibles al mismo tiempo
settings.dismissiblebooleantrueIndica si los toasts se pueden cerrar manualmente mediante la interacción del usuario (valor predeterminado de Sonner)
settings.closeButtonbooleantrueIndica si se debe mostrar un botón de cierre explícito en los toasts
Sonner Provider Example
const toastSettings = {
  provider: 'sonner', // Opcional, este es el valor predeterminado
  settings: {
    position: 'top-center',
    duration: 6000,
    maxToasts: 5,
    dismissible: true,
    closeButton: true
  }
};

Estado y rendimiento

Ajusta con precisión el almacenamiento en caché de TanStack Query para cada componente de Auth0. Los valores predeterminados mantienen los datos actualizados durante dos minutos, los recopilan como basura tras cinco minutos y omiten las recargas al enfocar la ventana.
PropiedadTipoValor predeterminadoDescripción
enabledbooleantrueActiva o desactiva por completo el almacenamiento en caché. Cuando se establece en false, se desactiva el uso de datos obsoletos y las entradas en caché se eliminan rápidamente.
staleTimenumber120000Milisegundos antes de que los datos se consideren obsoletos. El valor predeterminado es de dos minutos. Auméntelo para paneles y redúzcalo para flujos de trabajo críticos.
gcTimenumber300000Milisegundos antes de que las consultas inactivas se eliminen mediante recolección de basura. El valor predeterminado es de cinco minutos.
refetchOnWindowFocusboolean | “always”falseControla si las consultas se vuelven a ejecutar cuando el navegador recupera el foco. Use “always” para mantener la máxima frescura.
Desactivar el almacenamiento en caché: Pasa { enabled: false }. Esto establece automáticamente staleTime en 0 y reduce la ventana de recolección de basura a cinco segundos, de modo que cada renderizado obtenga datos actualizados.Sugerencia: Mantén el almacenamiento en caché habilitado, pero reduce staleTime al integrarlo con paneles de administración que requieren actualizaciones casi en tiempo real.
<Auth0ComponentProvider
  domain="your-tenant.auth0.com"
  cacheConfig={{
    staleTime: 10 * 60 * 1000,
    gcTime: 15 * 60 * 1000,
    refetchOnWindowFocus: true,
  }}
>
  <App />
</Auth0ComponentProvider>