Heim >Web-Frontend >js-Tutorial >Passauthentifizierung für Node.js -Anwendungen

Passauthentifizierung für Node.js -Anwendungen

William Shakespeare
William ShakespeareOriginal
2025-02-15 09:39:12409Durchsuche

Passport Authentication for Node.js Applications

Dieses Tutorial zeigt die Facebook- und Github -Authentifizierung in einer Webanwendung von node.js mit passport.js, einer beliebten Authentifizierung Middleware. Pass vereinfacht die Integration von OAuth und OpenID Connect.

Schlüsselkonzepte:

  • passport.js: a node.js Middleware -Stropherde -Authentifizierung mit verschiedenen Anbietern (Facebook, Github, Google usw.).
  • express.js: Ein Webanwendungs ​​-Framework für Node.js, mit dem die Struktur der Anwendung erstellt und Routing verarbeitet wird.
  • oAuth 2.0: Das von Facebook und Github verwendete Autorisierungsframework.
  • Strategien: Pass verwendet Strategien für jeden Anbieter (z. B. passport-facebook, passport-github).

Anwendungsaufbau:

  1. Projektinitialisierung: Erstellen Sie ein Projektverzeichnis und initialisieren Sie ein Node.js -Projekt:

    <code class="language-bash">mkdir AuthApp
    cd AuthApp
    npm init -y</code>
  2. HTML -Setup: Erstellen auth.html im Projektroot:

    <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>
  3. Abhängigkeiten installieren: Express und Pass installieren:

    <code class="language-bash">npm install express passport --save</code>
  4. Express App: erstellen index.js:

    <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>

    Führen Sie die App (node index.js) aus und überprüfen Sie http://localhost:3000 Zeigt die HTML an. Stoppen Sie die App (Ctrl C).

Passkonfiguration:

  1. Anbieterstrategien installieren: Facebook- und GitHub -Strategien installieren:

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

    <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>

Facebook -Authentifizierung:

  1. Erstellen Sie eine Facebook -App: Befolgen Sie die Anweisungen von Facebook, um eine neue App zu erstellen und Ihr App ID und App Secret zu erhalten.

  2. Konfigurieren Sie die Facebook -Strategie in : 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>
    Denken Sie daran, die gültige OAuth -URIs Ihrer Facebook -App zu

    zu konfigurieren. http://localhost:3000https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76/callback

GitHub -Authentifizierung:

  1. Erstellen Sie eine GitHub -App: Erstellen Sie eine neue Github -App und erhalten Sie Ihr und Client ID. Client Secret

  2. Konfigurieren Sie die GitHub -Strategie in : 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>
    Konfigurieren Sie die Autorisierungs -Callback -URL Ihrer GitHub -App zu

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

Führen Sie die Anwendung aus:

Starten Sie den Server (node index.js) und testen Sie die Facebook- und Github -Links. Die /success Route zeigt eine erfolgreiche Authentifizierung an. Denken Sie daran, Platzhalter -IDs und Geheimnisse durch Ihre tatsächlichen Werte zu ersetzen. Dies bietet einen grundlegenden Rahmen; Fehlerbehandlung und Benutzerdauer in einer Datenbank wäre für eine produktionsbereite Anwendung erforderlich.

Das obige ist der detaillierte Inhalt vonPassauthentifizierung für Node.js -Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn