使用护照后,几个请求后Node.js服务器卡住了

时间:2013-11-30 10:16:12

标签: node.js express passport.js

我正在使用护照编写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);

我试图完全删除任何与护照相关的代码,我的服务器工作正常,但我仍然想使用护照库...... 有什么帮助吗?我尝试了一切,我需要一些方向。

1 个答案:

答案 0 :(得分:2)

感谢您的帮助,发现了问题!

服务器缺乏响应的主要原因是deserializeUser函数从未调用done

那是因为我在泄漏与DB的连接时遇到了问题。