Express Passport.js成功redirect不加载页面,请求保持挂起

我正在尝试使用passport.js和护照本地进行基本的用户名/密码authentication。

虽然failureRedirect完全按照它应该做的事情(redirect到一个指定的页面),但是successRedirect会保持挂起状态,并且对指定的页面有请求,并且在一段时间之后它会返回“空的响应”。

http://www.deviantpics.com/VdG

正如你在这幅图中看到的那样,当它请求仪表板时,它说它的大小是0B,但是当我在仪表板上进行redirect时它说它有1.6B。

我已经看遍了整个Stackoverflow,我找不到一个答案,可以帮助我。

你可以请我检查我的代码,并build议一些事情之前,我疯了。

这是护照加载代码

//set expression var expressSession = require('express-session'); app.use(expressSession({ secret: credentials.session.secret })); //set passport var passport = require('passport'); var localStrategy = require('./strategies/auth/local.js'); passport.use('local', localStrategy); passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); }); app.use(passport.initialize()); app.use(passport.session()); 

routes.js

module.exports = function(app){

 //main app.get('/', main.home); app.get('/login', main.login); app.get('/signup', main.signup); app.post('/login', auth.loginLocal); app.post('/signup', main.checkSignup); //user app.get('/user/dashboard', user.dashboard); app.get('/user/addmemory', user.addMemory); app.get('/user/memory', user.memory); 

loginfunction

 exports.loginLocal = passport.authenticate('local', { successRedirect: '/user/dashboard', failureRedirect: '/login' }); 

本地策略

 var localAuthStrategy = new LocalStrategy(function(username, password, done) { User.findOne({ username: username }, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username' }); } if (!user.validPassword(password)) { return done(null, false, { message: 'Incorrect password' }); } return done(null, user); }); }); 

仪表板function

 exports.dashboard = function(req, res) { res.render('user/dashboard', { layout: 'user' }); }; 

       

网上收集的解决方案 "Express Passport.js成功redirect不加载页面,请求保持挂起"

我find了我的问题的答案,问题是用户模型没有在脚本中定义serializeUser和deserializeUser定义。 我不知道发生了什么,因为我没有定义任何捕捉所有处理程序的动作,所以需要记住,确保捕捉所有定义的处理程序以知道发生了什么

 app.use(function(err, req, res, next) { console.log(err); });