实施passportjs和angular4

时间:2017-09-20 04:49:21

标签: javascript angular passport.js

看,我已经使用passportjs制作了一个带注册/登录的平均堆栈应用程序,它很好,当我改为angular2(另一个是angularjs)我已经做了后端,我觉得它有效但是我不知道如何在正面测试它,我知道它必须是<a href="">中的网址,但当我把护照给我的路线,例如:/auth/facebook,我的应用什么都不做......好吧它做了什么,请把我送到主页:c 这是我到目前为止在后端的代码

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

1 个答案:

答案 0 :(得分: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'
    }));
}