Cet projet implémente un système d'authentification robuste et fiable que vous pouvez réutiliser dans n'importe quel projet
Le mécanisme d'authentification utilisé est basé sur des stratégies passport qui est très flexible et qui peut être utilisé avec n'importe quelle autre stratégie d'authentification telles que Oauth2 , jwt , cookies-session, etc..
Dans le cas de ce projet, l'authentification utilisé est celle du standard jsonwebtoken combiné avec une autre stratégie locale.
Avec le code existant vous pouvez très facilement ajouter des stratégies basées sur Oauth2(Google, Facebook, Githhub, Google,etc..)
Dans ce projet, le SGBD utilisé est MongoDB, mais vous pouvez le remplacer par n'importe quel système de stockage nosql ou relationnel comme MySQL, MariaDB ou encore PostreSQL car toutes les fonctionnalités de importantes sont indépendantes du système de stockage utilisé.
- Avoir
node.jsinstallé avecnpmouyarn - Avoir
Mongodbinstallé en local ou une base de données sur le cloud
Dans votre terminal, positionnez-vous dans le dossier principal du projet et exécutez la commande :
git clone https://github.com/jochri3/authentification-robuste-reutilisable-nodejs.git pour cloner le projet dans votre système
yarn ou npm install selon que vous utilisez yarn ou npm
yarn dev
Ouvrir http://localhost:3090 pour le voir dans le navigateur.
L'API possède 3 routes:
import router from '../router';
const { authRouter, autreRessource } = router;
app.use('/api/auth', authRouter);
app.use('/api/autre', autreRessource);authRouter.post('/signin', requireSignin, Authentication.signin);
authRouter.post('/signup', Authentication.signup);
autreRessource.get('/', requireAuth, (req, res) => {
res.send({
message: 'Voici comment proteger une route par authentification',
});
});
export default {
authRouter,
autreRessource,
};GET/api/autre: Route de test protégé par un middleware nommérequireAuthqui protège l'accès à la ressource.POST /api/auth/siginqui recois dereq.bodydes donnée enjsonen avec comme squelette{email:'[email protected]',password:'mot de passe'}.Si l'authentification se passe bien, cette route retourne unJSON WEB TOKEN.
Cetokenvous pouvez l'ajouter comme valeur dans le headerauthorizationet tester la routeGET /api/autre.POST /api/auth/signupqui recois{email:'[email protected]',password:'mot de passe'}pour créer un nouvel utilisateur et après sa création elle retourne unJSON WEB TOKEN
Ce projet possède des logs qui sont une très bonne pratique dans le développement d'une API et vous permet d'avoir des informations telles que des rapports de bugs par exemple.Pour cela les libraries utilisées sont winston et morgan combinées.
Si vous avez des questions, n'hesitez pas de m'écrire sur [email protected]


