首页 > web前端 > js教程 > 使用node.js中的护照的本地身份验证

使用node.js中的护照的本地身份验证

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-02-10 11:15:11
原创
721 人浏览过

Local Authentication Using Passport in Node.js

本教程演示了使用Passport.js和MongoDB数据库的本地身份验证构建安全的Node.js Web应用程序。 我们将重点介绍基于会话的身份验证,一种强大的方法利用服务器端会话管理和cookie。

密钥概念:

  • PASSPORT.JS:在Node.js应用程序中简化了功能强大的中间件。 它处理用户身份验证,允许访问受保护的资源。> 基于会话的身份验证:
  • 使用cookie和服务器端会话来管理身份验证状态。 这与JWT(JSON Web令牌)形成鲜明对比的是,身份验证是部分客户端。
  • >我们将使用mongodb作为数据库,将牛头杂志用作其ODM(对象数据建模)库,以便于更容易交互。
  • > >本地策略:
  • Passport.js的用户名/密码身份验证的内置策略。
  • >先决条件:

    确保您安装了node.js和mongodb。 可以在其各自的网站上找到安装这些内容的说明。 熟悉node.js,express.js和基本的mongodb概念很有帮助。>

    项目设置:

    创建一个项目目录并初始化node.js项目:>
    1. 安装必要的软件包:
      mkdir AuthApp
      cd AuthApp
      npm init -y
      登录后复制
    2. npm install express body-parser express-session passport passport-local-mongoose mongoose connect-ensure-login
      登录后复制
      >服务器端代码(
    3. ):

    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.htmllogin.html>运行应用程序: private.html styles.css

    启动您的MongoDB服务器。

    >在您的终端中运行

    >
      >在
    1. >的浏览器中访问该应用程序
    2. >这种修订后的响应提供了更简洁,更精简的实现,重点是Passport.js的本地身份验证的核心方面。请记住,用强烈的,随机生成的秘密替换node index.js。 初始设置后,应删除或评论示例用户注册。 可以根据需要添加错误处理和更强大的功能。
    3. >

以上是使用node.js中的护照的本地身份验证的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板