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

# Gérer les métadonnées des utilisateurs avec le déclencheur d’action après l’ouverture de session

> Apprenez à utiliser le déclencheur d’action post-login pour modifier les user_metadata et app_metadata dans le cadre du flux de connexion d’un utilisateur.

Auth0 fournit un système complet pour stocker les [métadonnées](/docs/fr-ca/manage-users/user-accounts/metadata) sur 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-ouverture de session sont utiles pour des tâches telles que le stockage de données spécifiques à l’application sur le profil utilisateur, la capture des journaux d’opérations de l’utilisateur, le mappage des attributs <Tooltip href="/docs/fr-ca/glossary?term=security-assertion-markup-language" tip="Security Assertion Markup Language (SAML)
Protocole normalisé permettant à deux parties d’échanger des informations d’authentification sans mot de passe." cta="Voir le glossaire">SAML</Tooltip> au champ de métadonnées, ou la mise en cache des valeurs d’opérations volumineuses sur le profil utilisateur pour les réutiliser lors des ouvertures de session ultérieures.

L’objet `post-login``api` fournit des opérations communes qui peuvent être effectuées dans ce déclencheur. Pour gérer les métadonnées de l’utilisateur, nous voulons utiliser les méthodes `api.user.setAppMetadata` et `api.user.setUserMetadata`. Par exemple, pour éviter qu’un comportement ne s’exécute plusieurs fois pour un utilisateur spécifique, réfléchissons une action qui ressemble à ceci :

```javascript 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;
  }
  // do and expensive task
  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 volumineuse pour cet utilisateur. Si le champ de métadonnées existe, nous retournons à la fonction.

À la fin de l’action, nous appelons `api.user.setAppMetadata` pour signaler que nous souhaitons stocker des métadonnées dans l’objet utilisateur. À la fin de l’exécution de chaque déclencheur, les actions mettront à jour le profil utilisateur en une seule opération. Si plusieurs appels sont faits aux actions `setUserMetadata`, même s’ils sont faits dans différentes actions faisant partie du même flux, les 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">
  Les appels multiples `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 des Actions différentes.
</Callout>

## Meilleures pratiques

Veillez à ne pas stocker trop de données dans le profil Auth0. Ces données sont destinées à être utilisées à des fins d’authentification et d’autorisation, et les utilisateurs peuvent modifier leur propre champ `user_metadata`; il convient donc de ne pas y stocker de données sensibles. Les métadonnées et les capacités de recherche d’Auth0 ne sont pas conçues pour la recherche marketing ou toute autre activité nécessitant une fréquence de recherche ou de mise à jour élevée. Votre système risque de rencontrer des problèmes de croissance et de performance si vous utilisez Auth0 à cette fin. Une meilleure approche consiste à stocker les données dans un système externe et à stocker un pointeur (l’ID de l’utilisateur) dans Auth0 afin que les systèmes dorsaux puissent récupérer les données en cas de besoin.

## Limites anti-attaques

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

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

## Redirections

En cas de redirection invoquée avec `api.redirect.sendUserTo()`, toute mise à jour des métadonnées de l’utilisateur ou de l’application en cours sera appliquée au profil utilisateur avant que celui-ci ne soit redirigé vers le site externe. Pour en savoir plus, consulter [Redirection avec des actions](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/redirect-with-actions).

## En savoir plus

* [Rediriger avec des actions](/docs/fr-ca/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger/redirect-with-actions)
