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

Pengesahan Pasport untuk Aplikasi Node.js

William Shakespeare
Lepaskan: 2025-02-15 09:39:12
asal
387 orang telah melayarinya

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:

    mkdir AuthApp
    cd AuthApp
    npm init -y
    Salin selepas log masuk
  2. Persediaan html html:
  3. membuat

    dalam root projek: auth.html

    <!DOCTYPE html>
    <html>
    <head>
      <title>Node.js OAuth</title>
    </head>
    <body>
      <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>
    </body>
    </html>
    Salin selepas log masuk
  4. Pasang Dependencies:
  5. Pasang Express and Passport:

    npm install express passport --save
    Salin selepas log masuk
  6. App Express:
  7. Buat

    : index.js Jalankan aplikasi () dan sahkan

    memaparkan HTML. Hentikan aplikasinya ().
    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}`));
    Salin selepas log masuk

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

Pasang Strategi Penyedia:

Pasang Strategi Facebook dan GitHub:
  1. Persediaan pasport

    di
    npm install passport-facebook passport-github --save
    Salin selepas log masuk
    :
  2. index.js

    Pengesahan Facebook:
    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));
    Salin selepas log masuk

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.

    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')
    );
    Salin selepas log masuk

    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.

    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')
    );
    Salin selepas log masuk

    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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan