本教程演示了使用Passport.js和MongoDB數據庫的本地身份驗證構建安全的Node.js Web應用程序。 我們將重點介紹基於會話的身份驗證,一種強大的方法利用服務器端會話管理和cookie。
密鑰概念:
確保您安裝了node.js和mongodb。 可以在其各自的網站上找到安裝這些內容的說明。 熟悉node.js,express.js和基本的mongodb概念很有幫助。 >
項目設置:
創建一個項目目錄並初始化node.js項目:
安裝必要的軟件包:
mkdir AuthApp cd AuthApp npm init -y
npm install express body-parser express-session passport passport-local-mongoose mongoose connect-ensure-login
index.js
客戶端代碼(html&css):
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); });
在您的項目root中的創建和>文件夾。 用必要的HTML文件(
,,html
)和用於樣式的文件填充它們(請參閱示例代碼的原始響應)。 客戶端JavaScript將需要稍微調整以匹配更新的服務器端路由和響應。 css
index.html
login.html
>運行應用程序:private.html
styles.css
>在您的終端中運行。
>node index.js
。 初始設置後,應刪除或評論示例用戶註冊。 可以根據需要添加錯誤處理和更強大的功能。 以上是使用node.js中的護照的本地身份驗證的詳細內容。更多資訊請關注PHP中文網其他相關文章!