使用express.static为每个用户的内容提供服务

时间:2015-10-07 15:17:33

标签: node.js express

我想设置一条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);
    } 
});

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

1 个答案:

答案 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);
    } 
});