> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Aprenda a usar el desencadenador post-login de Action para modificar `user_metadata` y `app_metadata` como parte del flujo de inicio de sesión de un usuario.

# Administrar los metadatos del usuario con el desencadenador post-login de Action

Auth0 proporciona un sistema completo para almacenar [metadatos](/es/docs/manage-users/user-accounts/metadata) en el perfil de usuario de Auth0. Puede configurar un desencadenador `post-login` para modificar `user_metadata` y `app_metadata` como parte del flujo de inicio de sesión de un usuario. Los desencadenadores post-login son útiles para tareas como almacenar datos específicos de la aplicación en el perfil de usuario, registrar operaciones del usuario, asignar atributos de <Tooltip tip="Security Assertion Markup Language (SAML): Protocolo estandarizado que permite a dos partes intercambiar información de autenticación sin una contraseña." cta="Ver glosario" href="/es/docs/glossary?term=SAML">SAML</Tooltip> al campo de metadatos, o almacenar en caché valores de operaciones costosas en el perfil de usuario para reutilizarlos en futuros inicios de sesión.

El objeto `api` de `post-login` proporciona operaciones comunes que se pueden realizar en este desencadenador. Para administrar los metadatos del usuario, queremos usar los métodos `api.user.setAppMetadata` y `api.user.setUserMetadata`. Por ejemplo, para evitar que cierto comportamiento se ejecute más de una vez para un usuario específico, considere una Action como esta:

```js lines theme={null}
exports.onExecutePostLogin = async (event, api) => {
  if (event.user.app_metadata.didAnExpensiveTask) {
    console.log(`Skipping the expensive task because it already occurred for ${event.user.email}.`);
    return;
  }
  // realizar una tarea costosa
  api.user.setAppMetadata("didAnExpensiveTask", true);
};
```

Aquí, agregamos una comprobación al inicio de la Action para ver si ya hemos realizado la tarea costosa para este usuario. Si el campo de metadata existe, salimos de la función.

Al final de la Action, llamamos a `api.user.setAppMetadata` para indicar que queremos almacenar metadata en el objeto de usuario. Al final de la ejecución de cada desencadenador, Actions actualizará el perfil de usuario en una sola operación. Si se realizan varias llamadas a `setUserMetadata`, incluso si se hacen en distintas Actions como parte del mismo flujo, Actions solo actualizará el perfil de usuario una vez: al final de la ejecución del desencadenador.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Varias llamadas a `setUserMetadata` o `setAppMetadata` se agruparán en una sola actualización del perfil de usuario al final de la ejecución del desencadenador, incluso si las realizan distintas Actions.
</Callout>

<div id="best-practices">
  ## Prácticas recomendadas
</div>

Tenga cuidado al almacenar demasiados datos en el perfil de Auth0. Estos datos están pensados para fines de autenticación y autorización, y los usuarios pueden editar su propio campo `user_metadata`, así que no almacene datos confidenciales en él. Las capacidades de metadatos y búsqueda de Auth0 no están diseñadas para estudios de mercado ni para ninguna otra tarea que requiera una alta frecuencia de búsquedas o actualizaciones. Es probable que su sistema tenga problemas de escalabilidad y rendimiento si usa Auth0 con este fin. Una mejor opción es almacenar los datos en un sistema externo y guardar una referencia (el ID de usuario) en Auth0 para que los sistemas de backend puedan obtenerlos si es necesario.

<div id="rate-limits">
  ## Límites de frecuencia
</div>

<Warning>
  La configuración de los metadatos del usuario y de la aplicación está sujeta a los límites de frecuencia de su inquilino y puede afectar la capacidad de procesamiento del inicio de sesión.
</Warning>

Aunque se realiza una sola llamada para actualizar el perfil de usuario, esa operación sigue estando sujeta a los [límites de frecuencia](/es/docs/troubleshoot/customer-support/operational-policies/rate-limit-policy/management-api-endpoint-rate-limits) de "Write User" de su inquilino. Si se alcanza el límite de frecuencia al intentar actualizar los metadatos, Actions reintentará la solicitud siempre que se devuelva un código de estado HTTP `429`. El retraso entre los reintentos se rige por el valor del encabezado `X-RateLimit-Reset` devuelto como parte de la respuesta `429`.

<div id="redirects">
  ## Redirecciones
</div>

Si se invoca una redirección con `api.redirect.sendUserTo()`, cualquier actualización pendiente de los metadatos del usuario o de la aplicación se aplicará al perfil de usuario antes de redirigir al usuario al sitio externo. Para obtener más información, consulta [Redirecting With Actions](/es/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/redirect-with-actions).

<div id="learn-more">
  ## Más información
</div>

* [Redirección con Actions](/es/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/redirect-with-actions)
