Динамический путь к папке 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");
}
});