Express: 是否可以绕过静态文件的会话?

8
我正在使用Express + Mongoose + Passport + Connect-mongo的简单设置,一切都运作良好。唯一让我困惑的是,即使是静态文件,我也可以看到passport.unserializeUser被调用,这在应用程序角度来看绝对是毫无意义的。
我可以理解有些情况下你希望在某种授权下提供静态文件服务,但我想知道如何在提供静态文件时“跳过”整个会话中间件。
(在生产环境中,我不能为资产使用cookies)

4
express.static放在所有其他中间件之上。 - Jonathan Ong
它能正常工作,我觉得它非常棒。Jonathan,你介意“回答”这个问题,这样我才能给你一些积分吗? :) - Claudio
1
我做这个不是为了积分! - Jonathan Ong
是的,但这个地方是供人们寻找答案的。如果我用你的提示回答自己,你介意吗? - Claudio
不行。提供完整的解释和/或示例会更好。 - Jonathan Ong
2个回答

14

中间件按照添加的顺序被调用。只需将静态中间件移到您的app.js中非常早的位置即可。

例如:

app.use(express.static(__dirname + "/public"));
// any other middleware
app.use(passport()); // or whatever your passport config looks like

1

您可以从另一个不存储任何cookie的域名提供静态文件。这也意味着在提供这些文件之前,您无法进行任何(安全)检查。

这种技术被各种网站使用,例如StackOverflow、Facebook和LinkedIn。


当然可以,而且我知道(正如我的最后一句话所述)。但我想知道是否可以通过编程实现 :) - Claudio
我对Node.js + Express + Passport并不是非常熟悉,但你可能可以设置你的Web服务器,如果请求的文件存在,则返回该文件,并在请求不是现有文件或文件夹时重定向到你的应用程序。 - Arjan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接