> ## 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 à l’aide du déclencheur d’action post-login

Auth0 offre un système complet pour stocker des [métadonnées](/docs/fr-ca/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 stocker des données propres à l’application dans le profil utilisateur, consigner les logs des opérations utilisateur, mapper les 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="/docs/fr-ca/glossary?term=SAML">SAML</Tooltip> au champ de métadonnées, ou mettre en cache sur le profil utilisateur les valeurs d’opérations coûteuses afin de les réutiliser lors de connexions ultérieures.

L’objet `api` de `post-login` fournit des opérations courantes pouvant être effectuées dans ce déclencheur. Pour gérer les métadonnées utilisateur, nous utiliserons les méthodes `api.user.setAppMetadata` et `api.user.setUserMetadata`. Par exemple, pour éviter qu’un certain comportement ne s’exécute plus d’une fois pour un utilisateur précis, prenons 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 voir si nous avons déjà effectué la tâche coûteuse 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 souhaitons stocker certaines métadonnées dans l’objet `user`. À la fin de l’exécution de chaque trigger, Actions met à jour le profil utilisateur en une seule opération. Si plusieurs appels à `setUserMetadata` sont effectués, même dans différentes actions du même flow, Actions ne met à jour le profil utilisateur qu’une seule fois--à la fin de l’exécution du trigger.

<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 trigger, même s’ils sont effectués par différentes Actions.
</Callout>

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

Évitez de stocker trop de données dans le profil Auth0. Ces données sont destinées à des fins d’authentification et d’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 une fréquence élevée de recherches ou de mises à jour. 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 utilisateur) dans Auth0 afin que les systèmes backend puissent récupérer les données au besoin.

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

<Warning>
  Le fait de définir les métadonnées utilisateur et d’application est assujetti aux limites de débit de votre tenant et peut avoir une incidence sur le débit des connexions.
</Warning>

Même si une seule requête est envoyée pour mettre à jour le profil utilisateur, cette opération demeure assujettie aux limites de débit [« Write User »](/docs/fr-ca/troubleshoot/customer-support/operational-policies/rate-limit-policy/management-api-endpoint-rate-limits) de votre tenant. Si la limite de débit est atteinte lors d’une tentative de mise à jour des métadonnées, Actions réessaiera 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ée dans la réponse `429`.

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

Lorsqu’une redirection est invoquée avec `api.redirect.sendUserTo()`, toute mise à jour en attente des métadonnées utilisateur ou des métadonnées d’application sera appliquée au profil utilisateur avant la redirection de l’utilisateur vers le site externe. Pour en savoir plus, consultez [Rediriger avec Actions](/docs/fr-ca/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](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/redirect-with-actions)
