Heim > Web-Frontend > js-Tutorial > Lokale Authentifizierung mit Pass in node.js

Lokale Authentifizierung mit Pass in node.js

尊渡假赌尊渡假赌尊渡假赌
Freigeben: 2025-02-10 11:15:11
Original
718 Leute haben es durchsucht

Local Authentication Using Passport in Node.js

Dieses Tutorial zeigt, dass ein sicheres Node.js -Webanwendung mit lokaler Authentifizierung mit Passport.js und einer MongoDB -Datenbank erstellt wird. Wir konzentrieren uns auf eine Sitzungsbasis-Authentifizierung, einen robusten Ansatz, der das serverseitige Sitzungsmanagement und Cookies nutzt.

Schlüsselkonzepte:

  • passport.js: Eine leistungsstarke Middleware -Vereinfachung der Authentifizierung in node.js -Anwendungen. Es behandelt die Benutzerauthentifizierung und ermöglicht den Zugriff auf geschützte Ressourcen.
  • Sitzungsbasierte Authentifizierung: Der Server verwaltet den Authentifizierungsstatus mithilfe von Cookies und serverseitigen Sitzungen. Dies steht im Gegensatz zu JWT (JSON Web Tokens), bei denen die Authentifizierung teilweise clientseitig ist.
  • MongoDB & Mongoose: Wir werden MongoDB als unsere Datenbank und Mongoose als ODM -Bibliothek (Objektdatenmodellierung) für eine einfachere Interaktion verwenden.
  • Lokale Strategie: passport.js integrierte Strategie für Benutzername/Kennwortauthentifizierung.

Voraussetzungen:

Stellen Sie sicher, dass Sie Node.js und MongoDB installiert haben. Anweisungen zur Installation dieser finden Sie auf ihren jeweiligen Websites. Vertrautheit mit Node.js, Express.js und grundlegenden MongoDB -Konzepten ist hilfreich.

Projekt -Setup:

  1. Erstellen Sie ein Projektverzeichnis und initialisieren Sie ein Node.js -Projekt:

    mkdir AuthApp
    cd AuthApp
    npm init -y
    Nach dem Login kopieren
  2. Installieren Sie die erforderlichen Pakete:

    npm install express body-parser express-session passport passport-local-mongoose mongoose connect-ensure-login
    Nach dem Login kopieren

serverseitiger Code (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); });
Nach dem Login kopieren

clientseitiger Code (HTML & CSS):

Ordner in Ihrem Projektrouch erstellen html und css. Populieren Sie sie mit den notwendigen HTML -Dateien (index.html, login.html, private.html) und einer styles.css -Pile für das Styling (siehe die ursprüngliche Antwort beispielsweise Code). Das clientseitige JavaScript muss geringfügig angepasst werden, um den aktualisierten serverseitigen Routen und Antworten zu entsprechen.

Ausführen der Anwendung:

  1. Starten Sie Ihren MongoDB -Server.
  2. run node index.js in Ihrem Terminal.
  3. Zugriff auf die Anwendung in Ihrem Browser unter http://localhost:3000.

Diese überarbeitete Antwort bietet eine prägnantere und optimiertere Implementierung, die sich auf die Kernaspekte der lokalen Authentifizierung mit passport.js konzentriert. Denken Sie daran, "your-secret-key" durch ein stark erzeugtes, zufällig erzeugtes Geheimnis zu ersetzen. Die Beispielbenutzerregistrierung sollte nach dem ersten Einrichtung zur Sicherheit entfernt oder kommentiert werden. Fehlerbehandlung und robustere Funktionen können nach Bedarf hinzugefügt werden.

Das obige ist der detaillierte Inhalt vonLokale Authentifizierung mit Pass in node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage