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:
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:
Erstellen Sie ein Projektverzeichnis und initialisieren Sie ein Node.js -Projekt:
mkdir AuthApp cd AuthApp npm init -y
Installieren Sie die erforderlichen Pakete:
npm install express body-parser express-session passport passport-local-mongoose mongoose connect-ensure-login
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); });
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:
node index.js
in Ihrem Terminal. 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!