Base de données externe par rapport au magasin de données Auth0
- Évolutivité : Le magasin de données Auth0 est limité en termes d’évolutivité, et les données de votre application peuvent dépasser les limites appropriées. En utilisant une base de données externe, vous gardez votre magasin de données Auth0 simplifié, tandis que la base de données externe, plus efficace, contient les données supplémentaires;
- Performance : Vos données d’authentification sont probablement consultées moins souvent que vos autres données. Le magasin de données Auth0 n’est pas optimisé pour une utilisation à haute fréquence, c’est pourquoi vous devriez stocker ailleurs les données qui doivent être récupérées plus souvent;
- Flexibilité : Le magasin de données Auth0 ayant été conçu pour accueillir uniquement des profils utilisateurs et leurs métadonnées, les actions que vous pouvez effectuer sur la base de données sont limitées. En utilisant des bases de données séparées pour vos autres données, vous pouvez gérer vos données de manière appropriée.
- Par exemple, vous pourriez avoir une table Utilisateurs qui répertorie chaque utilisateur authentifié par Auth0. Chaque fois qu’un utilisateur se connecte, vous pouvez rechercher cet utilisateur dans la table. Si l’utilisateur n’existe pas, vous créez un nouvel enregistrement. S’il existe, vous mettez à jour tous les champs, conservant ainsi une copie locale de toutes les données de l’utilisateur.
- Vous pouvez également stocker l’identifiant de l’utilisateur dans chaque table/collection contenant des données associées à l’utilisateur. Il s’agit d’une implémentation plus simple, adaptée aux petites applications.
Exemple de scénario de stockage de données utilisateur
Métadonnées
Métadonnées d’application
app_metadata :
- Plan d’abonnement de l’utilisateur
- Droit (ou absence de droit) de l’utilisateur à modifier les listes de lecture en vedette
app_metadata plutôt que dans user_metadata, car ils ne doivent pas être directement modifiables par l’utilisateur.
Métadonnées de l’utilisateur
user_metadata :
- Préférences de l’application
- Détails choisis par l’utilisateur pour modifier son expérience de l’application lors de la connexion.
app_metadata, l’utilisateur peut facilement et aisément modifier ceux stockés dans user_metadata.
Nous pouvons permettre à l’utilisateur de modifier son displayName, qui est le nom que l’utilisateur voit lorsqu’il se connecte et qui est affiché aux autres utilisateurs de l’application.
Pour afficher l’identifiant choisi par l’utilisateur à chaque fois qu’il se connecte, nous utilisons une règle pour obtenir la valeur user.user_metadata.
displayName :

user_metadata :
vous devez remplacer {yourAccessToken} par un jeton d’accès à Management API.
Règles d’autorisation des données utilisateur
Attribuer le rôle d’éditeur de liste de lecture
playlist_editor au tableau roles dans app_metadata.
Le paramètre scope spécifie le rôle
app_metadata et affecte le tableau des roles à un champ de l’objet utilisateur afin qu’il soit accessible sans appeler app_metadata sur l’application. Le paramètre scope peut alors spécifier les roles lors de la connexion de l’utilisateur sans inclure tout ce qui se trouve dans app_metadata dans l’objet utilisateur :
playlist_editor figure dans le tableau des roles stocké dans les app_metadata de l’utilisateur, ce dernier sera accueilli en tant que ÉDITEUR après s’être connecté :

Associer la musique d’un utilisateur à l’utilisateur
user_id. Voici un exemple de ligne de la table songs de notre base de données :
| song_id | songname | user_id |
|---|---|---|
| 1 | Succès numéro un | google-oauth2 |
GET à /secured/getFavGenre, l’API appelle la fonction queryGenre(), qui interroge la base de données et répond avec le genre préféré de l’utilisateur.
buildAPIRequest() prend le chemin et la méthode HTTP de la demande comme paramètres et crée une demande en utilisant la base URL de notre API Node.js qui est hébergée sur Heroku.
Dans l’application, la fonction getGenre() fait une demande à l’API et modifie l’interface de l’application pour afficher la réponse à la demande /genres/getFav. Le système dorsal récupère les données nécessaires à cette action en utilisant la fonction queryGenre() et renvoie les résultats à l’application.