Динамический путь к папке express.static()

У меня есть приложение, которое использует express.static для доступа к некоторой пользовательской информации, и логика маршрутов выглядит следующим образом:

app.get('/principal',function(req,res,next){
    if(req.query.user=='admin'){
        next();
    }else{
        res.send("not allowed");
    }
});
app.use('/principal',express.static('/_site'));

Но теперь мне это нужно всем пользователям, поэтому должно быть что-то вроде этого:

 var username = '';
 app.get('/principal',function(req,res,next){
        if(req.query.user){
            username = req.query.user;
            next();
        }else{
            res.send("not allowed");
        }
    });
    app.use('/principal',express.static(username+'/_site'));

У меня есть папка для каждого имени пользователя, мой express.static() продолжает читать имя пользователя var пустым.

2 ответа

Решение

Попробуйте обработать статические файлы из обработчика маршрута, чтобы сделать его динамическим для имени пользователя запроса:

app.get('/principal',function(req,res,next){
    if(req.query.user){

        // serve static files for usename
        app.use('/principal', express.static(username +'/_site'));

        res.send("allowed");
    }else{
        res.send("not allowed");
    }
});

Я не думаю, что вы можете сделать это с express.static, Тем не менее, вы могли бы,

app.get('/principal', function(req, res){
    if(req.query.user){
        const username = req.query.user;
        const path = `${username}/boo.js`
        res.sendfile(path, {root: '/_site'});
    }else{
        res.send("not allowed");
    }
});
Другие вопросы по тегам