我想设置一条Express路由来从依赖于用户的目录中提供静态内容。身份验证是每个会话;登录用户的ID存储为req.session.user_id
。对于这些用户,我想要提供用户的私有静态内容,该内容存储在__dirname + '/private/' + req.session.user_id
。这是我最好的尝试,但不起作用:
app.use('/static', function (req, res) {
if (res.session.user_id != undefined) {
// this is wrong
express.static(__dirname + '/private/' + req.session.user_id);
}
});
实现我想要的最简单方法是什么?
答案 0 :(得分:2)
由于您需要一个动态过程来查找要提供的文件,因此这不再是静态的,尝试使用static
方法是无意义的。
你最好的镜头是这样的:
app.use('/static*', function (req, res) {
if (res.session.user_id != undefined) {
var url = req.url.replace('/static', '');
// Serve the asked file directly
fs.createReadStream(__dirname + ' /private' + req.session.user_id + url).pipe(res);
}
});