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' }); };
我find了我的问题的答案,问题是用户模型没有在脚本中定义serializeUser和deserializeUser定义。 我不知道发生了什么,因为我没有定义任何捕捉所有处理程序的动作,所以需要记住,确保捕捉所有定义的处理程序以知道发生了什么
app.use(function(err, req, res, next) { console.log(err); });