首頁 > web前端 > js教程 > 使用node.js中的護照的本地身份驗證

使用node.js中的護照的本地身份驗證

尊渡假赌尊渡假赌尊渡假赌
發布: 2025-02-10 11:15:11
原創
718 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板