2017-09-20 26 views
0

看,我使用passportjs製作了一個使用register/login的平均堆棧應用程序,並且它很好,當我更改爲angular2(另一個是在angularjs上)時,我做了後端和我認爲它的作品,但我不知道如何測試它的前端,我知道它必須是與<a href="">中的網址的東西,但是當我把護照給我的路線,例如:/auth/facebook,我的應用程序什麼都不做。 。還有它的東西,送我去主頁:C 這裏是我到目前爲止的代碼在後端側實現passportjs和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; 
} 

我的問題是,我該如何實現這個的主音側,記住角4 :)

回答

0

這裏是僞代碼。

第1步:當您使用ngSubmit提交表單時,請調用一個函數,例如passportLogin()。

第2步:現在在你的組件中使用這個函數並對你的節點js(express js)URL做一個HTTP post請求,例如auth/login。

步驟3:在服務器側寫路由

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