Authentification

areatomic

AreAtomic

Posted on June 15, 2021

Authentification

React authentication

To-do

Les choses à faire pour avoir une authentification fonctionnelle :

  • Formulaire pour envoie du mot de passe et du nom d'utilisateur
  • Un système de vérification nom d'utilisateur / mot de passe
  • Un moyen de stocker le userId dans le client

Formulaire

Le formulaire doit contenir un nom d'utilisateur ou adresse mail, combiner avec un mot de passe.

Ces inputs doivent être envoyé au back à l'aide d'axios ou de fetch. La requête doit envoyer avec la méthode POST sur l'url défini au niveau de votre API.

fetch(
    'http://auth-react.com/api/login',
    {
        email: email,
        password: password
    },
    headers : myHeaders,
    method: POST
)
Enter fullscreen mode Exit fullscreen mode

Vérification

Dans le routeur qui est appelé par le formulaire une vérification de la concordance utilisateur/mot de passe doit être faites.

Exemple avec une base de données mongodb

const express = require('express')
const router = express.Router()

router.post('/login', async(req, res) => {
    const {email, mot_de_passe} = req.body

     try {
         // Recherche d'un utilisateur dans la base de données
        let utilisateur = await Utilisateur.findOne({ email })

        // Aucun utilisateur trouvé
        if (!utilisateur) {
            return res.status(400).json({ error: "L'email est invalide" })
        }

        if (mot_de_passe != utilisateur.mot_de_passe) {
            return res.status(400).json({ error: 'Mot de passe invalide' })
        }

        return res.status(200).json({
            id: utilisateur.id,
            nom: utilisateur.nom,
            prenom: utilisateur.prenom,
        })
    } catch (err) {
        res.status(500).json({ error: 'Serveur erreur' })
    }
}) 
Enter fullscreen mode Exit fullscreen mode

Remarque : si le mot de passé est chiffre ou hasher il faut passer à utiliser la méthode de comparaison de l'outil de chiffrement/hashage utilisé

Stockage

Une fois que la requête nous retourne l'utilisateur connecté, il suffit de placer le userId et les autres informations nécessaires dans le sessionStorage.

sessionStorage.setItem('user', JSON.stringify(response.data))
Enter fullscreen mode Exit fullscreen mode

Remarque: la création de la variable de session se fait dans le then de la requête fetch ou axios.

💖 💪 🙅 🚩
areatomic
AreAtomic

Posted on June 15, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related