Maison >interface Web >js tutoriel >Authentification locale utilisant le passeport dans Node.js

Authentification locale utilisant le passeport dans Node.js

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2025-02-10 11:15:11723parcourir

Local Authentication Using Passport in Node.js

Ce didacticiel montre la création d'une application Web sécurisée Node.js avec authentification locale à l'aide de Passport.js et d'une base de données MongoDB. Nous nous concentrerons sur l'authentification basée sur la session, une approche robuste tirant parti de la gestion et des cookies de session côté serveur.

Concepts clés:

  • Passport.js: Une puissante authentification simplifiant au middleware dans les applications Node.js. Il gère l'authentification des utilisateurs, permettant l'accès aux ressources protégées.
  • Authentification basée sur la session: Le serveur gère l'état d'authentification à l'aide de cookies et de sessions côté serveur. Cela contraste avec JWT (jetons Web JSON), où l'authentification est partiellement côté client.
  • MongoDB & Mongoose: Nous utiliserons MongoDB comme base de données et mongoose comme bibliothèque ODM (Modélisation des données d'objet) pour une interaction plus facile.
  • Stratégie locale: Stratégie intégrée de Passport.js pour l'authentification du nom d'utilisateur / mot de passe.

Prérequis:

Assurez-vous que Node.js et MongoDB sont installés. Les instructions pour les installer peuvent être trouvées sur leurs sites Web respectifs. La familiarité avec les concepts Node.js, Express.js et Basic MongoDB est utile.

Configuration du projet:

  1. Créez un répertoire de projet et initialisez un projet Node.js:

    <code class="language-bash">mkdir AuthApp
    cd AuthApp
    npm init -y</code>
  2. Installez les packages nécessaires:

    <code class="language-bash">npm install express body-parser express-session passport passport-local-mongoose mongoose connect-ensure-login</code>

Code côté serveur (index.js):

<code class="language-javascript">const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const expressSession = require('express-session')({ secret: 'your-secret-key', resave: false, saveUninitialized: false });
const passport = require('passport');
const mongoose = require('mongoose');
const passportLocalMongoose = require('passport-local-mongoose');
const connectEnsureLogin = require('connect-ensure-login');

// MongoDB Connection
mongoose.connect('mongodb://localhost/MyDatabase', { useNewUrlParser: true, useUnifiedTopology: true });

// User Schema
const userSchema = new mongoose.Schema({ username: String });
userSchema.plugin(passportLocalMongoose);
const User = mongoose.model('User', userSchema);

// Passport Configuration
passport.use(User.createStrategy());
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

// Middleware
app.use(express.static(__dirname));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(expressSession);
app.use(passport.initialize());
app.use(passport.session());

// Routes
app.post('/login', passport.authenticate('local', {
    successRedirect: '/',
    failureRedirect: '/login?info=Invalid credentials'
}));

app.get('/login', (req, res) => res.sendFile('html/login.html', { root: __dirname }));
app.get('/', connectEnsureLogin.ensureLoggedIn(), (req, res) => res.sendFile('html/index.html', { root: __dirname }));
app.get('/private', connectEnsureLogin.ensureLoggedIn(), (req, res) => res.sendFile('html/private.html', { root: __dirname }));
app.get('/user', connectEnsureLogin.ensureLoggedIn(), (req, res) => res.json({ user: req.user }));

const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`App listening on port ${port}`));

//Register Sample Users (remove or comment out after initial setup)
User.register({username: 'testuser'}, 'password', (err, user) => { if (err) console.error(err); });</code>

Code côté client (HTML & CSS):

Créer des dossiers html et css dans la racine de votre projet. Les remplir avec les fichiers HTML nécessaires (index.html, login.html, private.html) et un fichier styles.css pour le style (reportez-vous à la réponse d'origine par exemple le code). Le JavaScript côté client devra être légèrement ajusté pour correspondre aux voies et réponses mises à jour du serveur.

exécuter l'application:

  1. Démarrez votre serveur MongoDB.
  2. Run node index.js dans votre terminal.
  3. Accédez à l'application dans votre navigateur à http://localhost:3000.

Cette réponse révisée fournit une implémentation plus concise et rationalisée, en se concentrant sur les aspects principaux de l'authentification locale avec Passport.js. N'oubliez pas de remplacer "your-secret-key" par un secret fort et généré de manière aléatoire. L'exemple d'enregistrement de l'utilisateur doit être supprimé ou commenté après la configuration initiale pour la sécurité. La gestion des erreurs et des fonctionnalités plus robustes peuvent être ajoutées au besoin.

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