0

Je suis en train de concevoir un backend Node + MySQL pour un service qui nécessite une authentification à deux facteurs pour tous les utilisateurs dans le cadre du processus d'inscription. Les utilisateurs soumettent d'abord un numéro de téléphone principal et un mot de passe (avec le numéro de téléphone utilisé pour la connexion), sur lequel le serveur leur envoie un SMS avec un code à six chiffres. Ce n'est qu'après avoir entré le code que leur compte est entièrement créé.SQL - Méthodes de stockage des informations d'inscription intermédiaires pour les utilisateurs

Cela pose le problème de la façon de stocker des données pour les utilisateurs dans l'état intermédiaire après avoir entré le nom d'utilisateur/mot de passe, mais avant de vérifier le code. De tels "utilisateurs en attente" ne seront pas montrés dans les recherches, n'auront pas besoin de stocker toutes les données d'un utilisateur régulier, et seront supprimés après quelques jours s'ils ne sont jamais vérifiés. De plus, puisque chaque utilisateur doit permettre à TFA de s'inscrire complètement, il y aura plus d'utilisateurs que d'utilisateurs en attente. Ainsi, il ne me semble pas logique que tous les utilisateurs stockent simplement un drapeau "isVerified". Je suis familier avec SQL sur le plan technique mais je n'ai aucune expérience dans la conception de bases de données pour la production, et je me demande quels autres mécanismes je devrais envisager pour résoudre ce problème.

Mon idée actuelle est d'avoir une table séparée des utilisateurs en attente, ayant seulement les colonnes nécessaires pour stocker les informations d'inscription intermédiaires. Lorsqu'un utilisateur vérifie, une ligne est créée dans la table utilisateur réelle, les informations d'inscription sont copiées et la ligne correspondante est supprimée de la table des utilisateurs en attente. Cependant, cela rend quelque peu moche de s'assurer que les numéros de téléphone principaux sont uniques dans les deux tableaux (ce qui est une exigence supplémentaire du service). Quelles méthodes/techniques dois-je prendre en considération pour améliorer ma solution?

Répondre

0

Vous pouvez stocker ces données de la même manière que les informations de session de stockage sur le serveur.