Passer au contenu principal
Auth0 fournit un système robuste pour stocker des métadonnées 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 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 :
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.
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.

Bonnes pratiques

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

Limites de débit

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.
Même si un seul appel est effectué pour mettre à jour le profil utilisateur, cette opération reste soumise aux limites de débit « 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.

Redirections

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.

Pour en savoir plus