Права доступа при отдаче загруженных файлов
Добавлено: 2016.01.26, 13:38
Добрый день!
Есть пользователи, они могут создавать статьи, в которых могут использоваться загруженные картинки. При этом у статьи есть настройки доступа: кто-то может её смотреть, а кто-то - нет. Для модели статьи с правами доступа всё понятно. Но вот с загруженными файлами - не очень. В простом варианте, загруженные файлы просто лежат в какой то папке, доступной напрямую по хттп. Таким образом, скажем если есть статья которая закрыта для просмотра, картинки используемые в ней всё равно будут доступны по прямому урлу(если его знать).
Я пока вижу такие варианты:
1) Убрать файлы из веба и отдавать их через контроллер, в котором проверять всё необходимое.
1.1) Файлы так же на ФС, но отдавать их с помощью, например, readfile.
1.2) Хранить содержимое файлов вообще в БД - оттуда и отдавать.
2) Что-то изобретать с настройками веб-сервера (у меня апач), "научить" его обращаться к приложению для проверки прав, такое вообще бывает?
Какие еще варианты? Особенно интересует производительность. Например, про вариант файлов в БД слышал, что кеш мускула ими просто забъется.
Научите как грамотно это сделать?
Спасибо!
Есть пользователи, они могут создавать статьи, в которых могут использоваться загруженные картинки. При этом у статьи есть настройки доступа: кто-то может её смотреть, а кто-то - нет. Для модели статьи с правами доступа всё понятно. Но вот с загруженными файлами - не очень. В простом варианте, загруженные файлы просто лежат в какой то папке, доступной напрямую по хттп. Таким образом, скажем если есть статья которая закрыта для просмотра, картинки используемые в ней всё равно будут доступны по прямому урлу(если его знать).
Я пока вижу такие варианты:
1) Убрать файлы из веба и отдавать их через контроллер, в котором проверять всё необходимое.
1.1) Файлы так же на ФС, но отдавать их с помощью, например, readfile.
1.2) Хранить содержимое файлов вообще в БД - оттуда и отдавать.
2) Что-то изобретать с настройками веб-сервера (у меня апач), "научить" его обращаться к приложению для проверки прав, такое вообще бывает?
Какие еще варианты? Особенно интересует производительность. Например, про вариант файлов в БД слышал, что кеш мускула ими просто забъется.
Научите как грамотно это сделать?
Спасибо!