Я использую Multer для загрузки некоторых файлов, и мне интересно, какой будет рекомендуемый способ защитить доступ к этим файлам после загрузки.Защитить загруженные файлы и предоставить доступ только авторизованным пользователям
У меня есть 2 типа пользователей; администратора и обычного пользователя. Пользователи могут загружать фотографии, и только администратор может получить доступ к URL-адресу фотографии.
Моя структура папок для загрузки файлов: ./public/uploads/teacher/
Это мой код:
server.js
// This is auth middleware which checks if access token is valid to access API
app.all('/api/*', [require('./validateReq')]);
app.use('/', require('./routes'));
app.use(express.static('public'));
маршруты/index.js
var teacher = require('./teachers.js');
router.post('/upload', teacher.uploadAvatar);
маршруты/teachers.js
var multer = require('multer');
var upload = multer({ dest: 'uploads/teacher/' }).single('avatar');
uploadAvatar: function(req, res) {
upload(req, res, function(err) {
console.log(req.body);
console.log(req.file);
if(err) {
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
}
Если пользователь загружает файл john_doe.png
, как я могу ограничить доступ к следующему адресу только для учителя/администратора, так что это не публичный: localhost:8000/uploads/teacher/john_doe.png
. Какая была бы лучшая практика в таких ситуациях?