2015-06-05 3 views
0

Это мой номер:Узел приложения и хранения файлов

У меня есть веб-приложение узла, которое отвечает за аутентификацию пользователя. Как только пользователь успешно выполнил вход в систему, им будет представлена ​​персональная страница, содержащая безопасные ссылки на файлы. Вот моя файловая структура.

File Structure

secure/ где мои файлы размещены

Приложение само по себе является лишь около 7 МБ.

Файлы для этих пользователей около 600MB

У меня есть два вопроса довольно высокого уровня, чтобы спросить.

  1. Должен ли я использовать express.js для этого? У меня такое чувство, что Node.js не сияет в этом сценарии, и у меня было много трудностей в поиске учебников для более сложной аутентификации пользователей (групп пользователей/ролей). RoR?

  2. Должны ли мои файлы сидеть вне приложения? В базе данных? s3 ведро? На данный момент я установил статический маршрут к папке, которая находится в каталоге приложения с именем secure, после чего у меня есть некоторое промежуточное программное обеспечение, которое проверяет все запросы на secure/ и проверяет, разрешен ли пользователь (см. Код ниже). Я спрашиваю об этом, так как у меня есть ограничение на загрузку 512 МБ с помощью Elastic Beanstalk

    app.all ('/ secure/*', function (req, res, next) { if (req.isAuthenticated()) { next(); // разрешить запуск следующего маршрута } else { // запрашивать у пользователя res.redirect ("/"); } }); app.use ('/ secure', express.static (config.root + '/ secure'));

Даже если кто-то может предоставить мне некоторые ресурсы, которые были бы замечательными! Спасибо

ответ

1
  1. Express.js также хорош как RoR или что-то еще. Больше никаких комментариев.
  2. Да, абсолютно. Ваши файлы должны находиться вне приложения. Почти во всех сценариях, требующих постоянного хранения, вам лучше использовать постоянные и надежные решения для хранения данных, такие как S3. И, отправляя защищенные файлы вместе с кодом приложения, это не очень хорошая идея. Что касается эластичного beanstalk, экземпляр EC2, запущенный для обслуживания вашего приложения, не имеет постоянного локального хранилища, и, следовательно, при завершении экземпляра ваши данные будут потеряны. Кроме того, у вас будут проблемы с автоматическим масштабированием, когда один из ваших экземпляров не сможет получить доступ к файлам в другом экземпляре. Предполагая, что вы используете AWS, я предлагаю вам использовать S3. Вы также можете изучить одно из новых решений для хранения AWS: Elastic File System
+0

Спасибо, Самар. Рад слышать, что Express.js так же хорош, как и RoR. Я попал в блокнот в моем приложении, где я не могу найти хороший учебник по интеграции s3 с узловым приложением, размещенным с эластичным бобовым стеблем. Я задал вопрос о своей проблеме, но не был знаком с тем, как реализовать предлагаемое решение. Вот мой первоначальный вопрос [http://stackoverflow.com/questions/30636597/accessing-a-s3-bucket-from-node/30637404#30637404](http://stackoverflow.ком/вопросы/30636597/доступа к-а-s3-роторные из-узла/30637404 # 30637404) – sebko