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

> Découvrez comment utiliser le déclencheur d’Action post-login pour modifier `user_metadata` et `app_metadata` dans le cadre du flux de connexion d’un utilisateur.

# Gérer les métadonnées utilisateur avec le déclencheur d’Action post-login

Auth0 fournit un système robuste pour stocker des [métadonnées](/fr-CA/docs/manage-users/user-accounts/metadata) dans le profil utilisateur Auth0. Vous pouvez configurer un déclencheur `post-login` pour modifier `user_metadata` et `app_metadata` dans le cadre du flux de connexion d’un utilisateur. Les déclencheurs post-login sont utiles pour des tâches comme le stockage de données propres à l’application dans le profil utilisateur, la consignation des opérations de l’utilisateur, le mappage des attributs <Tooltip tip="Security Assertion Markup Language (SAML) : protocole normalisé permettant à deux parties d’échanger des renseignements d’authentification sans mot de passe." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=SAML">SAML</Tooltip> vers le champ de métadonnées, ou la mise en cache, dans le profil utilisateur, de valeurs issues d’opérations coûteuses pour les réutiliser lors de connexions futures.

L’objet `api` de `post-login` fournit des opérations courantes qui peuvent être effectuées dans ce déclencheur. Pour gérer les métadonnées utilisateur, utilisez les méthodes `api.user.setAppMetadata` et `api.user.setUserMetadata`. Par exemple, pour éviter qu’un comportement ne s’exécute plus d’une fois pour un utilisateur donné, considérez une Action comme celle-ci :

```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;
  }
  // effectuer une tâche coûteuse
  api.user.setAppMetadata("didAnExpensiveTask", true);
};
```

Ici, nous avons ajouté une vérification au début de l’Action pour déterminer si cette opération coûteuse a déjà été effectuée pour cet utilisateur. Si le champ de métadonnées existe, nous quittons la fonction.

À la fin de l’Action, nous appelons `api.user.setAppMetadata` pour indiquer que nous voulons stocker certaines métadonnées dans l’objet utilisateur. À la fin de l’exécution de chaque déclencheur, Actions mettront à jour le profil utilisateur en une seule opération. Si plusieurs appels à `setUserMetadata` sont effectués, même dans différentes Actions au sein du même flux, Actions ne mettront à jour le profil utilisateur qu’une seule fois -- à la fin de l’exécution du déclencheur.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Plusieurs appels à `setUserMetadata` ou `setAppMetadata` seront regroupés en une seule mise à jour du profil utilisateur à la fin de l’exécution du déclencheur, même s’ils sont effectués par différentes Actions.
</Callout>

<div id="best-practices">
  ## Bonnes pratiques
</div>

Évitez de stocker trop de données dans le profil Auth0. Ces données sont destinées à l’authentification et à l’autorisation, et les utilisateurs peuvent modifier leur propre champ `user_metadata`; n’y stockez donc pas de données sensibles. Les métadonnées et les capacités de recherche d’Auth0 ne sont pas conçues pour les études de marché ni pour toute autre utilisation exigeant des recherches fréquentes ou des mises à jour fréquentes. Votre système risque de rencontrer des problèmes d’évolutivité et de performance si vous utilisez Auth0 à cette fin. Il vaut mieux stocker les données dans un système externe et conserver un pointeur (l’ID de l’utilisateur) dans Auth0 afin que les systèmes back-end puissent récupérer les données au besoin.

<div id="rate-limits">
  ## Limites de débit
</div>

<Warning>
  La définition des métadonnées utilisateur et d’application est soumise aux limites de débit de votre locataire et peut affecter le débit des connexions.
</Warning>

Même si un seul appel est effectué pour mettre à jour le profil utilisateur, cette opération reste soumise aux [limites de débit](/fr-CA/docs/troubleshoot/customer-support/operational-policies/rate-limit-policy/management-api-endpoint-rate-limits) « Write User » de votre locataire. Si la limite de débit est atteinte lors d’une tentative de mise à jour des métadonnées, les Actions réessaieront la requête tant qu’un code d’état HTTP `429` est renvoyé. Le délai entre les tentatives est déterminé par la valeur de l’en-tête `X-RateLimit-Reset` renvoyé dans la réponse `429`.

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

Si une redirection est appelée avec `api.redirect.sendUserTo()`, toute mise à jour en attente des métadonnées de l’utilisateur ou de l’application sera appliquée au profil utilisateur avant que l’utilisateur ne soit redirigé vers le site externe. Pour en savoir plus, consultez [Redirecting With Actions](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/redirect-with-actions).

<div id="learn-more">
  ## Pour en savoir plus
</div>

* [Redirection avec Actions](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/redirect-with-actions)
