Table des matières
Qu'est-ce que la gestion des autorisations ?
Pourquoi utiliser Node.js pour la gestion des autorisations ?
Créer un système de gestion des autorisations avec Node.js
Étape 1 : Installer Node.js
Étape 2 : Configurer le projet
Étape 3 : Installez les modules Node.js requis
Étape 4 : Créer une base de données
Étape 5 : Écrivez le code
Étape 6 : Créer des vues
Conclusion
Maison interface Web js tutoriel Comment créer un système de gestion des autorisations à l'aide de Node.js

Comment créer un système de gestion des autorisations à l'aide de Node.js

Apr 05, 2023 am 09:08 AM

À mesure que la complexité des applications Web augmente, la gestion des autorisations devient de plus en plus importante. La gestion des utilisateurs et des rôles des utilisateurs, ainsi que la restriction de l'accès à certaines pages, sont devenues un élément essentiel des applications Web. Node.js est un environnement JavaScript côté serveur très populaire qui permet de créer des applications Web efficaces. Dans cet article, nous apprendrons comment créer un système de gestion des autorisations à l'aide de Node.js.

Qu'est-ce que la gestion des autorisations ?

La gestion des autorisations est le processus de contrôle de ce à quoi les utilisateurs peuvent accéder et effectuer. Cela implique la gestion des utilisateurs et des rôles d'utilisateurs, l'allocation des ressources et des autorisations, etc.

Dans une application Web, la gestion des autorisations est très importante, qu'il s'agisse de protéger les informations sensibles ou de contrôler les autorisations d'accès des utilisateurs. Différents utilisateurs peuvent avoir des droits d'accès différents, en fonction de leurs rôles et autorisations.

Pourquoi utiliser Node.js pour la gestion des autorisations ?

Node.js est un environnement JavaScript côté serveur piloté par événements, idéal pour créer des applications Web efficaces. L'utilisation de Node.js pour créer un système de gestion des autorisations peut offrir les avantages suivants :

  • Développement rapide : Node.js fournit de nombreux modules et bibliothèques qui peuvent réduire considérablement le temps de développement.
  • Hautes performances : Node.js étant non bloquant, il peut gérer un grand nombre de requêtes simultanées.
  • Extensibilité : Node.js vous permet d'ajouter et d'étendre des modules facilement.
  • Coût : Node.js est gratuit et dispose d'une documentation complète et de ressources communautaires.

Créer un système de gestion des autorisations avec Node.js

Voici les étapes pour créer un système de gestion des autorisations avec Node.js :

Étape 1 : Installer Node.js

Pour commencer à utiliser Node.js, vous devez installez-le d'abord. Vous pouvez accéder au [site officiel de Node.js](https://nodejs.org/en/) pour télécharger la dernière version de Node.js. Après avoir exécuté le programme d'installation, vous pouvez vérifier à partir de la ligne de commande que Node.js est correctement installé. Tapez la commande suivante dans la ligne de commande :

node -v
Copier après la connexion

Si l'installation réussit, vous verrez le numéro de version de Node.js.

Étape 2 : Configurer le projet

Maintenant que Node.js est installé, vous devez configurer le projet. Accédez au dossier du projet sur la ligne de commande et entrez la commande suivante :

npm init
Copier après la connexion

Cette commande vous guidera pour créer un nouveau fichier package.json. Ce fichier est un manifeste de projet JavaScript qui contient toutes les informations et dépendances du projet.

Étape 3 : Installez les modules Node.js requis

Dans Node.js, vous pouvez facilement utiliser le gestionnaire de packages npm pour installer les modules requis. Entrez la commande suivante sur la ligne de commande pour installer les modules requis :

  • express : Un framework pour créer des applications Web.
  • body-parser : utilisé pour analyser les données dans le corps de la requête.
  • cookie-parser : utilisé pour analyser les données contenues dans les cookies.
  • express-session : permet de gérer les séances.
  • connect-flash : utilisé pour afficher les messages flash.
npm install express body-parser cookie-parser express-session connect-flash --save
Copier après la connexion

Étape 4 : Créer une base de données

Vous aurez également besoin d'une base de données pour stocker les informations sur les utilisateurs et les rôles. Dans cet article, nous utiliserons MongoDB.

Tout d’abord, vous devez installer MongoDB. Vous pouvez télécharger la dernière version de MongoDB depuis le [site officiel de MongoDB](https://www.mongodb.com/).

Ensuite, vous devez créer une nouvelle base de données et une nouvelle collection dans MongoDB. Entrez la commande suivante sur la ligne de commande :

mongo
use mydb
db.createCollection("users")
db.createCollection("roles")
Copier après la connexion

Ce code créera une base de données nommée "mydb", et deux collections nommées "users" et "roles".

Étape 5 : Écrivez le code

Maintenant que vous avez terminé tous les préparatifs, vous pouvez commencer à écrire le code. Dans le répertoire du projet, créez un fichier appelé "app.js" et ajoutez le code suivant au fichier :

const express = require('express');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const session = require('express-session');
const flash = require('connect-flash');
const mongoose = require('mongoose');

const app = express();

mongoose.connect('mongodb://localhost/mydb');

const User = mongoose.model('User', { name: String, password: String, role: String });
const Role = mongoose.model('Role', { name: String, permissions: [String] });

app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session({ secret: 'secret key', resave: false, saveUninitialized: false }));
app.use(flash());

const requireRole = (role) => {
  return (req, res, next) => {
    if (req.session.user && req.session.user.role === role) {
      next();
    } else {
      req.flash('error', 'Permission denied');
      res.redirect('/login');
    }
  };
};

app.get('/', (req, res) => {
  res.render('index');
});

app.get('/login', (req, res) => {
  res.render('login', { error: req.flash('error') });
});

app.post('/login', (req, res) => {
  User.findOne({ name: req.body.name, password: req.body.password }, (err, user) => {
    if (err) {
      req.flash('error', 'Login failed');
      res.redirect('/login');
    } else if (!user) {
      req.flash('error', 'Invalid user or password');
      res.redirect('/login');
    } else {
      req.session.user = user;
      res.redirect('/dashboard');
    }
  });
});

app.get('/dashboard', requireRole('manager'), (req, res) => {
  res.render('dashboard');
});

app.get('/logout', (req, res) => {
  req.session.destroy();
  res.redirect('/login');
});

app.listen(3000, () => {
  console.log('Server started at http://localhost:3000');
});
Copier après la connexion

Ce code comprend les étapes suivantes :

  1. Importez tous les modules Node.js requis et connectez la base de données MongoDB.
  2. Définissez deux collections MongoDB Utilisateur et Rôle.
  3. Configurez l'application Express et définissez la fonction middleware pour valider les rôles des utilisateurs.
  4. Définissez les itinéraires Express, y compris l'itinéraire racine, l'itinéraire de connexion, l'itinéraire du tableau de bord et l'itinéraire de déconnexion.
  5. Démarrez l'application Express et écoutez sur le port 3000.

Étape 6 : Créer des vues

Enfin, vous devez créer des vues pour présenter votre application Web.

Dans le répertoire du projet, créez un dossier appelé "views" et créez les fichiers de vue suivants :

  • index.ejs : pour le rendu de la page d'accueil.
  • login.ejs : utilisé pour présenter l'interface de connexion.
  • dashboard.ejs : utilisé pour rendre le tableau de bord.
<!doctype html>
<html>
<head>
  <title>Node.js Authorization</title>
</head>
<body>
  <h1>Node.js Authorization</h1>
  <nav>
    <% if (typeof user === &#39;undefined&#39;) { %>
      <a href="/login">Sign in</a>
    <% } else { %>
      <a href="/dashboard">Dashboard</a>
      <a href="/logout">Sign out</a>
    <% } %>
  </nav>
  <hr>
  <p>Welcome to Node.js Authorization.</p>
</body>
</html>
Copier après la connexion
<!doctype html>
<html>
<head>
  <title>Node.js Authorization - Login</title>
</head>
<body>
  <h1>Node.js Authorization - Login</h1>
  <% if (error) { %>
    <p><%= error %></p>
  <% } %>
  <form method="post" action="/login">
    <div>
      <label for="name">Name:</label>
      <input type="text" name="name" required>
    </div>
    <div>
      <label for="password">Password:</label>
      <input type="password" name="password" required>
    </div>
    <div>
      <input type="submit" value="Sign in">
    </div>
  </form>
</body>
</html>
Copier après la connexion
<!doctype html>
<html>
<head>
  <title>Node.js Authorization - Dashboard</title>
</head>
<body>
  <h1>Node.js Authorization - Dashboard</h1>
  <nav>
    <a href="/">Home</a>
    <a href="/logout">Sign out</a>
  </nav>
  <hr>
  <h2>Welcome <%= user.name %>.</h2>
  <p>You are logged in as a manager.</p>
</body>
</html>
Copier après la connexion

Ces trois vues sont légèrement différentes. La route index.ejs est accessible directement, la route login.ejs est contrôlée lorsqu'elle n'est pas connectée et Dashboard.ejs n'est accessible qu'aux utilisateurs ayant l'identité de manager.

Conclusion

Node.js est un excellent outil pour créer des applications Web efficaces. Il fournit de nombreuses fonctionnalités et modules pour vous aider à créer facilement un puissant système de gestion des autorisations. Avec Node.js, vous pouvez développer rapidement, être performant, être évolutif et c'est gratuit. Node.js dispose également d'une communauté active qui fournit des tonnes de support et de ressources.

Dans cet article, nous avons appris comment créer un système de gestion des autorisations à l'aide de Node.js. Nous avons appris à utiliser MongoDB pour stocker des informations sur les utilisateurs et les rôles, à créer des applications Web à l'aide d'Express.js et à utiliser un moteur de modèle pour afficher des vues.

J'espère que cet article vous sera utile, merci d'avoir lu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Qui est payé plus de python ou de javascript? Qui est payé plus de python ou de javascript? Apr 04, 2025 am 12:09 AM

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

Démystifier javascript: ce qu'il fait et pourquoi c'est important Démystifier javascript: ce qu'il fait et pourquoi c'est important Apr 09, 2025 am 12:07 AM

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Apr 04, 2025 pm 05:09 PM

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido?
ou:
Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Apr 04, 2025 pm 05:36 PM

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

JavaScript est-il difficile à apprendre? JavaScript est-il difficile à apprendre? Apr 03, 2025 am 12:20 AM

Apprendre JavaScript n'est pas difficile, mais c'est difficile. 1) Comprendre les concepts de base tels que les variables, les types de données, les fonctions, etc. 2) Master la programmation asynchrone et les implémenter via des boucles d'événements. 3) Utilisez les opérations DOM et promettez de gérer les demandes asynchrones. 4) Évitez les erreurs courantes et utilisez des techniques de débogage. 5) Optimiser les performances et suivre les meilleures pratiques.

Comment implémenter la fonction de glisser-déposer et de régler la fonction de réglage similaire à VScode dans le développement frontal? Comment implémenter la fonction de glisser-déposer et de régler la fonction de réglage similaire à VScode dans le développement frontal? Apr 04, 2025 pm 02:06 PM

Explorez la mise en œuvre de la fonction de glisser et de réglage du panneau de type VScode dans le frontal. Dans le développement frontal, comment implémenter un VScode comme ...

La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? Apr 04, 2025 pm 05:12 PM

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

See all articles