我是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
我的身份验证/ 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
问题:
答案 0 :(得分: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 })
);