好吧,把我的头撞在墙上我只是从everyauth切换到passportjs,并且一切都很顺利,除了我实现的Valums文件上传器。
您可以在https://gist.github.com/4066155上查看我的fileuploader代码的要点
我的app.configure for express看起来像这样:
app.configure( function () {
app.use(express.methodOverride());
app.use(express.static(__dirname + '/public'));
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('view options', {
layout: false
});
app.use(passport.initialize());
app.use(passport.session());
});
奇怪的是,如果我注释掉app.use(passport.session()); -文件上传器似乎工作正常。由于不会引起任何问题,passport.initialize可以保留。
如果我在代码中保留了使用通行证.session,那么上传调用就通过了,它实际上确实在我的tmp目录中创建了一个临时文件,但它的字节数为零。服务器从不响应Web客户端(无回调),并且文件从不实际由fs写入。
即使指向正确方向的指针也可能很有帮助。如果您需要更多背景信息,请告诉我。谢谢。
更新:
如果有帮助,我将req变量与diff进行比较,以查看未调用password.session时与调用password.session时的区别。第一个差异是不调用passport.session的,第二个差异是被调用的。 URL:http://diffchecker.com/Xk8g434Q-第469行很有趣,它显示了绑定的事件,然后在第二行文本中,事件只是{}(空)。
最佳答案
passport.session()
方法调用您的passport.deserializeUser()
,它本身通常会进行数据库调用以获取用户。此数据库调用延迟了开始侦听传入数据的代码的执行。也就是说,数据到达时没有人在听。
关于node.js - PassportJs的passport.session()与文件上传器冲突-无法写入文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13363110/