Как защитить статические файлы в одностраничном приложении с помощью node.js

Я планирую разработать веб-сайт с публичной и частной зонами. Обе области сайта будут отдельными одностраничными приложениями, реализованными с помощью AngularJS. Я использую Node.js для создания веб-службы REST для внешнего интерфейса.

Доступ к приватной зоне возможен только при аутентификации (имя пользователя/пароль). Также аутентификация необходима для вызова вызовов REST API.

Файлы общедоступной области будут храниться в подпапке /public, а файлы личной папки — в подпапке /private. Я отдаю статические файлы для публичного доступа с помощью nginx. Я также хочу обслуживать статические файлы частной области с помощью nginx.

Как запретить пользователям доступ к файлам напрямую, например www.example.com/private/js/app.js?

Только пользователи, прошедшие проверку подлинности, должны иметь возможность открывать файлы в папке /private.


person tschiela    schedule 25.06.2013    source источник


Ответы (1)


К сожалению, если вы используете nginx для сервера статических приватных файлов, вы ограничены очень простыми методами аутентификации, например:

  • Базовая аутентификация: из файла htpasswd, который содержит список пользователей и паролей.
  • Аутентификация LDAP: создайте каталог LDAP (это сторонний модуль)

Однако, если ваши системы хранят пользователей в базе данных, nginx не знает, как аутентифицировать пользователей. Кроме того, если в вашей системе аутентификация должна сочетаться с авторизацией, т. е. пользователь 1 может получить доступ только к /private/user1/kittenpicture.jpg, а пользователь 2 /private/user2/nakedpics.jpg, то nginx вам тоже не поможет, и у вас нет другого выбора, кроме как обслуживать свои частные файлы из nodejs (с тех пор вы можете комбинировать все виды промежуточных программ аутентификации/авторизации с промежуточными программами для обслуживания статических файлов.

person Alberto    schedule 31.07.2013