使用express.static来服务每个用户的内容

我想设置一个Express路由来提供静态内容,从依赖于用户的目录。 身份validation是每个会话; login的用户将其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); } }); 

什么是最简单的方法来实现我想要的?

既然你需要有一个dynamic的过程来find要提供的文件,这不是静态的,试图使用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); } });