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

Authentification locale utilisant le passeport dans Node.js

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-02-10 11:15:11
original
737 Les gens l'ont consulté

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:

    mkdir AuthApp
    cd AuthApp
    npm init -y
    Copier après la connexion
  2. Installez les packages nécessaires:

    npm install express body-parser express-session passport passport-local-mongoose mongoose connect-ensure-login
    Copier après la connexion

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

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); });
Copier après la connexion

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal