2017-05-06 123 views
1

我是Express.js的新手,但我想以正確的方式學習它。因此,我已經開始使用Peter Lyon建議的代碼結構:https://github.com/focusaurus/express_code_structure。我下面一個passport.js教程,需要我的護照對象傳遞給我的路由器,我卡在那裏將對象傳遞給路由器

這是我的index.js:

appCommon.head(app, passport) 

// Load all Routers 
app.use('/', require('./pages/router')) 
app.use('/projects', require('./projects/router')) 
app.use('/', require('./authentication/router'))(passport) // Pass passport to router 

我的認證/路由器。 JS:

var express = require('express') 
var join = require('path').join 

var router = new express.Router() 
// I removed the other functions 
function processSignup (req, res) { 
    passport.authenticate('local-signup', { 
     successRedirect : '/profile', // redirect to the secure profile section 
     failureRedirect : '/signup', // redirect back to the signup page if there is an error 
     failureFlash : true // allow flash messages 
    }) 
} 
router.use(express.static(join(__dirname, '../../wwwroot'))) 
router.get('/login', login) 
router.get('/signup', signup) 
router.post('/signup', processSignup) 
router.get('/profile', isLoggedIn, profile) 
router.get('/logout', logout) 

module.exports = router 

問題:

  1. 我是否正確地將護照對象傳遞給我的路由器?
  2. 如何將護照對象添加到我的路由器以便processSignup函數知道它?

回答

0

你真的不應該發送任何護照對象到路由器。你應該做的就是使用策略的主要文件是這樣的:

// load passport strategies 
const localStrategy    = require('./server/passport') 
passport.use('local-signup', localStrategy.Signup) 
passport.use('local-login',  localStrategy.Login) 

當您在護照使用這個策略,你可以在你的任何途徑使用此策略來驗證馬上象下面這樣:

const passport = require('passport'); 
router.post('/login', 
    passport.authenticate('local-login', { successRedirect: '/', 
           failureRedirect: '/login', 
           failureFlash: true }) 
);