Maison > interface Web > js tutoriel > Authentification du passeport pour les applications Node.js

Authentification du passeport pour les applications Node.js

William Shakespeare
Libérer: 2025-02-15 09:39:12
original
387 Les gens l'ont consulté

Passport Authentication for Node.js Applications

Ce tutoriel démontre l'authentification Facebook et GitHub dans une application Web Node.js à l'aide de Passport.js, un middleware d'authentification populaire. Le passeport simplifie l'intégration OAuth et OpenID Connect.

Concepts clés:

  • Passport.js: a node.js Middleware Rationlining Authentification avec divers fournisseurs (Facebook, Github, Google, etc.).
  • express.js: Un cadre d'application Web pour node.js utilisé pour créer la structure de l'application et gérer le routage.
  • oauth 2.0: Le cadre d'autorisation utilisé par Facebook et GitHub.
  • Stratégies: Le passeport utilise des stratégies pour chaque fournisseur (par exemple, passport-facebook, passport-github).

Configuration de l'application:

  1. Initialisation du projet: Créez un répertoire de projet et initialisez un projet Node.js:

    mkdir AuthApp
    cd AuthApp
    npm init -y
    Copier après la connexion
  2. Configuration HTML: Créer auth.html dans la racine du projet:

    <!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>
    Copier après la connexion
  3. Installez les dépendances: Installer Express et Passeport:

    npm install express passport --save
    Copier après la connexion
  4. Application Express: Créer index.js:

    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}`));
    Copier après la connexion

    Exécutez l'application (node index.js) et Verify http://localhost:3000 Affiche le HTML. Arrêtez l'application (Ctrl C).

Configuration du passeport:

  1. Installez les stratégies du fournisseur: Installez les stratégies Facebook et GitHub:

    npm install passport-facebook passport-github --save
    Copier après la connexion
  2. Configuration du passeport dans index.js:

    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));
    Copier après la connexion

Authentification Facebook:

  1. Créer une application Facebook: Suivez les instructions de Facebook pour créer une nouvelle application et obtenir votre App ID et App Secret.

  2. Configurer la stratégie Facebook dans 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')
    );
    Copier après la connexion

    N'oubliez pas de configurer les UAut de redirection de votre application Facebook URUTH vers http://localhost:3000https://www.php.cn/link/cc1d70ad9d0ce820738dc9ffc4053a76/callback.

Authentification GitHub:

  1. Créez une application GitHub: Créez une nouvelle application GitHub et obtenez votre Client ID et Client Secret.

  2. Configurer la stratégie GitHub dans 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')
    );
    Copier après la connexion

    Configurez l'URL de rappel d'autorisation de votre application GitHub vers http://localhost:3000https://www.php.cn/link/899a13400527fd3b12105ec17a67dbac/callback.

Exécutez l'application:

Démarrez le serveur (node index.js) et testez les liens de connexion Facebook et GitHub. La route /success indiquera une authentification réussie. N'oubliez pas de remplacer les ID et les secrets d'espace réservé par vos valeurs réelles. Cela fournit un cadre de base; La gestion des erreurs et la persistance des utilisateurs dans une base de données seraient nécessaires pour une application prête pour la production.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal