本教程演示了使用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中文网其他相关文章!