2017-09-20 4 views
0

Regardez, j'ai fait une pile app moyenne avec register/login en utilisant passportjs, et ça allait, quand je suis passé à angular2 (l'autre était sur angularjs) j'ai fait le côté backend et je pense que cela fonctionne mais je ne sais pas comment le tester sur le fronted, je sais qu'il doit être quelque chose avec l'URL dans le <a href=""> mais quand je mets la route que le passeport me donne, exemple: /auth/facebook, mon application ne fait rien .. . Eh bien, il fait quelque chose, envoyez-moi à la page d'accueil: c voici mon code jusqu'à présent du côté back-endImplémenter passportjs et angular4

const FacebookStrategy = require('passport-facebook').Strategy; 
const session   = require('express-session'); 
const secret   = require('../config/database') 
const user    = require('../models/user') 

module.exports = function(app, passport){ 
     app.use(passport.initialize()); 
     app.use(passport.session()); 
     app.use(session({ 
     secret: 'keyboard cat', 
     resave: false, 
     saveUninitialized: true, 
     cookie: { secure: false } 
     })); 

     passport.serializeUser(function(user, done) { 
     token = jwt.sign({email: user.email}, secret, {expiresIn : '24h'}); 
     done(null, user.id); 
    }); 

    passport.deserializeUser(function(id, done) { 
     User.findById(id, function(err, user) { 
     done(err, user); 
     }); 
    }); 
    passport.use(new FacebookStrategy({ 
     clientID: '350645212059140', 
     clientSecret: '8a990aec6db37cc3535f4223c235c427', 
     callbackURL: "http://localhost:4200/auth/facebook/callback", 
     profileFields: ['id','displayName','email'] 
     }, 
     function(accessToken, refreshToken, profile, done) { 
     console.log(profile); 
     // User.findOrCreate(..., function(err, user) { 
     // if (err) { return done(err); } 
     // done(null, user); 
     // }); 
     done(null, profile) 
     } 
    )); 
    app.get('/auth/facebook',passport.authenticate('facebook', { scope: 'email' })); 
    app.get('/auth/facebook/callback' , passport.authenticate('facebook', {failureRedirect: '/login'}), function(res, res){ 
     if (err) { 
     console.log(err) 
     }else{ 
     res.send('wi') 
     } 
    }) 
    return passport; 
} 

ma question, comment puis-je mettre en œuvre ce côté rieuses, souviens-toi angulaire 4 :)

Répondre

0

Voici un pseudo code pour cela. Etape 1: Lorsque vous soumettez votre formulaire en utilisant ngSubmit, appelez une fonction par exemple passportLogin().

Étape 2: Dans votre composant, utilisez cette fonction et envoyez une requête HTTP à l'adresse js (express js) de votre noeud, par exemple, auth/login.

Etape 3: Dans le côté serveur écrire un routage

var express = require('express'), 
    router = express.Router(); 
module.exports = function(passport){ 
router.post('/login', passport.authenticate('local-login', { 
     successRedirect: '/auth/success', 
     failureRedirect: '/auth/failure' 
    })); 
}