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

PHPz
PHPzoriginal
2023-04-05 09:08:501622parcourir

À 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

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

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

É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")

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');
});

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>
<!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>
<!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>

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:
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