Rumah >hujung hadapan web >tutorial js >Pengesahan Pasport untuk Aplikasi Node.js

Pengesahan Pasport untuk Aplikasi Node.js

William Shakespeare
William Shakespeareasal
2025-02-15 09:39:12409semak imbas

Passport Authentication for Node.js Applications

Tutorial ini menunjukkan pengesahan Facebook dan GitHub dalam aplikasi web Node.js menggunakan pasport.js, middleware pengesahan yang popular. Pasport memudahkan integrasi OAuth dan OpenID Connect.

Konsep Utama:

  • pasport.js: A Node.js middleware menyelaraskan pengesahan dengan pelbagai penyedia (Facebook, GitHub, Google, dll.).
  • express.js: Rangka kerja aplikasi web untuk node.js yang digunakan untuk membina struktur aplikasi dan mengendalikan penghalaan.
  • oauth 2.0: Rangka kerja kebenaran yang digunakan oleh Facebook dan GitHub.
  • Strategi: Pasport menggunakan strategi untuk setiap pembekal (mis., , passport-facebook). passport-github

Persediaan Aplikasi:

  1. Inisialisasi Projek: Buat direktori projek dan mulakan projek node.js:

    <code class="language-bash">mkdir AuthApp
    cd AuthApp
    npm init -y</code>
  2. Persediaan html html:
  3. membuat

    dalam root projek: auth.html

    <code class="language-html"><!DOCTYPE html>
    
    
      <title>Node.js OAuth</title>
    
    
      <a href="https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76">Sign in with Facebook</a><br><br>
      <a href="https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac">Sign in with GitHub</a>
    
    </code>
  4. Pasang Dependencies:
  5. Pasang Express and Passport:

    <code class="language-bash">npm install express passport --save</code>
  6. App Express:
  7. Buat

    : index.js Jalankan aplikasi () dan sahkan

    memaparkan HTML. Hentikan aplikasinya ().
    <code class="language-javascript">const express = require('express');
    const app = express();
    const port = process.env.PORT || 3000;
    
    app.get('/', (req, res) => res.sendFile('auth.html', { root: __dirname }));
    app.listen(port, () => console.log(`App listening on port ${port}`));</code>

    node index.js http://localhost:3000 Ctrl C Konfigurasi Pasport:

Pasang Strategi Penyedia:

Pasang Strategi Facebook dan GitHub:
  1. Persediaan pasport

    di
    <code class="language-bash">npm install passport-facebook passport-github --save</code>
    :
  2. index.js

    Pengesahan Facebook:
    <code class="language-javascript">const passport = require('passport');
    app.use(passport.initialize());
    app.use(passport.session());
    
    app.get('/success', (req, res) => res.send("Successfully logged in!"));
    app.get('/error', (req, res) => res.send("Error logging in."));
    
    passport.serializeUser((user, done) => done(null, user));
    passport.deserializeUser((user, done) => done(null, user));</code>

Buat aplikasi Facebook:

Ikuti arahan Facebook untuk membuat aplikasi baru dan dapatkan
    dan
  1. .

    App ID App Secret Konfigurasi Strategi Facebook dalam

    :
  2. ingat untuk mengkonfigurasi uris redirect OAuth aplikasi Facebook anda ke index.js.

    <code class="language-javascript">const FacebookStrategy = require('passport-facebook').Strategy;
    const FACEBOOK_APP_ID = 'YOUR_FACEBOOK_APP_ID'; // Replace with your App ID
    const FACEBOOK_APP_SECRET = 'YOUR_FACEBOOK_APP_SECRET'; // Replace with your App Secret
    
    passport.use(new FacebookStrategy({
        clientID: FACEBOOK_APP_ID,
        clientSecret: FACEBOOK_APP_SECRET,
        callbackURL: "https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76/callback",
        profileFields: ['id', 'displayName', 'photos', 'email'] //Optional: Specify fields to retrieve
    }, (accessToken, refreshToken, profile, done) => {
        done(null, profile);
    }));
    
    app.get('https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76', passport.authenticate('facebook'));
    app.get('https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76/callback',
        passport.authenticate('facebook', { failureRedirect: '/error' }),
        (req, res) => res.redirect('/success')
    );</code>

    http://localhost:3000https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76/callback Pengesahan GitHub:

Buat aplikasi GitHub:

Buat aplikasi GitHub baru dan dapatkan
    dan
  1. .

    Client ID Client Secret Konfigurasi strategi github dalam

    :
  2. Konfigurasikan URL Panggilan Kebenaran GitHub anda ke index.js.

    <code class="language-javascript">const GitHubStrategy = require('passport-github').Strategy;
    const GITHUB_CLIENT_ID = 'YOUR_GITHUB_CLIENT_ID'; // Replace with your Client ID
    const GITHUB_CLIENT_SECRET = 'YOUR_GITHUB_CLIENT_SECRET'; // Replace with your Client Secret
    
    passport.use(new GitHubStrategy({
        clientID: GITHUB_CLIENT_ID,
        clientSecret: GITHUB_CLIENT_SECRET,
        callbackURL: "https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac/callback"
    }, (accessToken, refreshToken, profile, done) => {
        done(null, profile);
    }));
    
    app.get('https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac', passport.authenticate('github'));
    app.get('https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac/callback',
        passport.authenticate('github', { failureRedirect: '/error' }),
        (req, res) => res.redirect('/success')
    );</code>

    http://localhost:3000https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac/callback Jalankan aplikasi:

  3. Mulakan pelayan (node index.js) dan uji pautan log masuk Facebook dan GitHub. Laluan /success akan menunjukkan pengesahan yang berjaya. Ingatlah untuk menggantikan ID dan Rahsia Pemegang Sedang dengan nilai sebenar anda. Ini menyediakan rangka asas; Pengendalian ralat dan kegigihan pengguna dalam pangkalan data diperlukan untuk aplikasi siap pengeluaran.

Atas ialah kandungan terperinci Pengesahan Pasport untuk Aplikasi Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn