Когда вы настраиваете маршрут static
в Express, любые файлы из иерархии из папки root обслуживаются автоматически. Например, если у меня была структура папок, например, такая:
root
- public
-- css
-- js
-- img
И мой сервер выглядел как
app.use(express.static('public'));
app.use((req, res, next) => {
console.log(`REQUEST LOGGED: ${req.url}`);
return next();
});
...
Когда я обращаюсь к любому файлу URL, который находится в пределах этого состояния c root например
/css/somefile.css
/js/somefile.js
/img/somefile.jpg
Тогда вы заметите, что запрос никогда не достигает console.log
, потому что Express понимает, что это a. файлы и б. находятся в каталоге stati c и, следовательно, не требуют дальнейшей обработки (следовательно, вы замечаете, что если вы попробуете нефайловые URL, они делают дальнейшую обработку).
В терминах добавив некоторую форму авторизации к файлам stati c, есть несколько способов сделать это, например,
- исключить эту конкретную папку из маршрута stati c и обработать авторизацию, которую вы будет делать на любом другом маршруте
app.get('/Buyer_templates/*', (req, res, next) =>
if (/* some authorization check */) {
return res.sendFile('...');
} else {
return res.status(403).send('Unauthorized');
}
});
- добавить ваше промежуточное ПО авторизации до вы настроите маршрут stati c (хотя это будет значит, немного больше работы, определяющей, какие URL проверять и т. д. c.)
app.use((req, res, next) => {
if (req.path.startsWith('/Buyer_templates')) {
return res.status(403).send('Unauthorized');
}
return next();
})
app.use(express.static(__dirname));
Приведенные выше примеры просто упрощены c для демонстрации, но они должны дать вам желаемый эффект. Также стоит отметить, что express.static(__dirname)
не рекомендуется, так как это сделает все файлы доступными из root вашего приложения, которое будет включать любой код, который вы, возможно, разместили на сервере. Будь более точным c то есть express.static('Buyer_templates')