好吧,在这件事上我的头撞到了墙上。我刚刚从 everyauth 切换到 Passportjs,一切都很顺利,除了我实现的 Valums 文件 uploader 。
您可以在https://gist.github.com/4066155查看我的文件 uploader 代码的要点
我的 Express app.configure 如下所示:
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()); - 文件 uploader 似乎工作正常。 Passport.initialize 可以保留,因为它不会造成任何问题。
如果我在代码中保留 use Passport.session,上传调用就会通过,它实际上会在我的 tmp 目录中创建一个临时文件,但它保持为零字节。服务器永远不会响应 Web 客户端(无回调),文件也不会真正由 fs 写入。
即使是指向正确方向的指针也可能非常有帮助。如果您需要更多背景信息,请告诉我。谢谢。
更新:
如果有帮助的话,我比较了 req 变量,以查看未调用passport.session 时与调用passport.session 时的差异。第一个差异是在 Passport.session 未调用时,第二个差异是在调用时。网址:http://diffchecker.com/Xk8g434Q - 第 469 行很有趣,它显示了正在绑定(bind)的事件,然后在第二个文本 block 中,事件只是 {}(空)。
最佳答案
passport.session()
方法调用您的 passport.deserializeUser()
,它本身通常会进行数据库调用来获取用户。此数据库调用会延迟开始监听传入数据的代码的执行。也就是说,数据在没有人监听的情况下到达。
关于node.js - PassportJs 的 Passport.session() 与文件 uploader 冲突 - 不会写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363110/