Bonjour, j’ai un site et je voudrais ajouter un système deux facteurs d’authentification si l’utilisateur veut cela. J’utilise nextjs framework et pour l’authentification j’utilise iron-session.
Je voulais savoir si le système que j’ai commencé à faire était correct et sécurisé.
Dans ma page, j’ai le composant formLogin et par défaut (avec useState) j’affiche le formulaire login*:
L’utilisateur peut remplir des champs (mot de passe et e-mail) et appeler api route.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 const [displayInput, setDisplayInput] = useState(false);
Si l’utilisateur se connecte sans deux facteurs, c’est la réponse (après vérification du courriel et du mot de passe)*:
Donc, la différence lorsque l’utilisateur a deux facteurs d’authentification activé, c’est que je ne retourne cela comme réponse et que je ne crée pas de session*:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 let userObject = { role: user.role, id: user.id, }; req.session.user = userObject; await req.session.save(); return res.status(200).json({ status: 200, body: userObject, message: `Hello, ${user.firstname} you are log`, });
Et dans mon composant formLogin si response.status === 200 et response.body === null lorsque l’utilisateur appelle la route api alors j’appelle la nouvelle route api pour créer et envoyer un code à son email (le code est stocké dans la base de données) Si la réponse de la nouvelle route api est l’état 200 je change setDisplayInput(true) pour afficher le code d’entrée afin que l’utilisateur entre son code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 return res.status(200).json({ status: 200, body: null, });
Ensuite, l’utilisateur appelle l’API lorsque le formulaire est soumis avec la saisie de code et je mets dans le corps de l’e-mail de demande, mot de passe et code
Dans la route api, je vérifie à nouveau l’adresse e-mail et le mot de passe et si l’utilisateur est trouvé, je vérifie si le code est bon et après je peux créer la session*:
J’ai l'impression de me répéter entre les deux routes api parce que lorsque je dois vérifier le code, je vérifie le mot de passe et l’e-mail à nouveau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 req.session.user = userObject; await req.session.save();
Je ne sais pas si je me suis exprimé clairement. Si vous avez besoin de plus de précision sur mon système, n’hésitez pas. Merci
Partager