在使用passport时,Node.js服务器在收到少量请求后被卡住
我正在编写一个node.js应用程序,使用passport进行身份验证。我注意到一种奇怪的行为: 如果我使用此代码,我的服务器会在10个请求后卡住(我删除了一些不相关的代码): 我试图完全删除任何与passport相关的代码,我的服务器工作正常,但我仍然想使用passport库。。。在使用passport时,Node.js服务器在收到少量请求后被卡住,node.js,express,passport.js,Node.js,Express,Passport.js,我正在编写一个node.js应用程序,使用passport进行身份验证。我注意到一种奇怪的行为: 如果我使用此代码,我的服务器会在10个请求后卡住(我删除了一些不相关的代码): 我试图完全删除任何与passport相关的代码,我的服务器工作正常,但我仍然想使用passport库。。。 需要帮忙吗?我什么都试过了,我需要一些指导。谢谢你的帮助,找到了问题 服务器缺乏响应的主要原因是,反序列化用户函数从未调用过done 这是因为我遇到了数据库连接泄漏的问题。我不知道MySqlBl模块,但如果您在完成
需要帮忙吗?我什么都试过了,我需要一些指导。谢谢你的帮助,找到了问题 服务器缺乏响应的主要原因是,
反序列化用户
函数从未调用过done
这是因为我遇到了数据库连接泄漏的问题。我不知道MySqlBl模块,但如果您在完成后不关闭数据库连接,它可能会泄漏数据库连接。正如@JoachimIsaksson所说,您的MySqlBl模块可能正在打开连接,而从未关闭连接,这填补了问题。当池已满时,其他请求将被保留,等待套接字释放。请将db连接移动到模块,以便可以重用db对象
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);