我正在使用护照编写node.js应用程序进行身份验证。我注意到一个奇怪的行为: 如果我使用这段代码,我的服务器会在10次请求后卡住(我修剪了一些不相关的代码):
var express = require('express');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var MySqlBl = require('./server/db/mysqlbl');
var app = express();
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function (user, done) {
done(null, user.userName);
});
passport.deserializeUser(function (username, done) {
var mysqlbl = new MySqlBl();
mysqlbl.getUser(username, onGetUserCompleted);
function onGetUserCompleted(user) {
if (user === undefined) {
done('Problem deserializing user');
}
done(null, user);
};
});
passport.use(new LocalStrategy(function (username, password, done) {
var mysqlbl = new MySqlBl();
mysqlbl.getUser(username, onGetUserCompleted);
function onGetUserCompleted(user) {
return done(null, user);
};
}
));
app.use(app.router);
require('./server/routes')(app);
我试图完全删除任何与护照相关的代码,我的服务器工作正常,但我仍然想使用护照库...... 有什么帮助吗?我尝试了一切,我需要一些方向。
答案 0 :(得分:2)
感谢您的帮助,发现了问题!
服务器缺乏响应的主要原因是deserializeUser
函数从未调用done
。
那是因为我在泄漏与DB的连接时遇到了问题。