Права доступа при отдаче загруженных файлов

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
fly2k
Сообщения: 155
Зарегистрирован: 2013.03.19, 05:31

Права доступа при отдаче загруженных файлов

Сообщение fly2k » 2016.01.26, 13:38

Добрый день!

Есть пользователи, они могут создавать статьи, в которых могут использоваться загруженные картинки. При этом у статьи есть настройки доступа: кто-то может её смотреть, а кто-то - нет. Для модели статьи с правами доступа всё понятно. Но вот с загруженными файлами - не очень. В простом варианте, загруженные файлы просто лежат в какой то папке, доступной напрямую по хттп. Таким образом, скажем если есть статья которая закрыта для просмотра, картинки используемые в ней всё равно будут доступны по прямому урлу(если его знать).

Я пока вижу такие варианты:

1) Убрать файлы из веба и отдавать их через контроллер, в котором проверять всё необходимое.
1.1) Файлы так же на ФС, но отдавать их с помощью, например, readfile.
1.2) Хранить содержимое файлов вообще в БД - оттуда и отдавать.

2) Что-то изобретать с настройками веб-сервера (у меня апач), "научить" его обращаться к приложению для проверки прав, такое вообще бывает?

Какие еще варианты? Особенно интересует производительность. Например, про вариант файлов в БД слышал, что кеш мускула ими просто забъется.

Научите как грамотно это сделать?

Спасибо!
// Yii2Rulez!

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Права доступа при отдаче загруженных файлов

Сообщение zelenin » 2016.01.26, 13:41

1.1, только проверить производительность на больших файлах.

Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Права доступа при отдаче загруженных файлов

Сообщение rugabarbo » 2016.01.26, 13:42

Статьи хранить в БД.
Про файлы zelenin ответил.

Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Права доступа при отдаче загруженных файлов

Сообщение rugabarbo » 2016.01.26, 13:51

Если хочется изучить грамотную реализацию хранения файлов в БД, рекомендую Phabricator (разрабатывается крутыми ребятами из Facebook): http://phabricator.org

Я на своих инстансах фабрикатора храню файлы в БД. Задаётся конфой: https://secure.phabricator.com/book/pha ... e_storage/
(cм.секцию Storage Engine)

Кстати, в этом же мане у них хорошо расписаны плюсы и минусы всех подходов к хранению.

Бонус в крутости бэкапов: не приходится бэкапить отдельно файлы и отдельно БД.
Бэкапится только БД.

Начать раскопки реализации можно отсюда: https://github.com/phacility/phabricato ... Engine.php

lynicidn
Сообщения: 2221
Зарегистрирован: 2014.05.24, 15:12

Re: Права доступа при отдаче загруженных файлов

Сообщение lynicidn » 2016.01.26, 13:58

1 и 1.1. (что по сути одно и тоже) только я рекомендовал бы не readfile, https://github.com/yiisoft/yii2/blob/50 ... e.php#L432

и рбак где по имени найдется картинка, потом вытащится ее пост и проверится пост на доступ

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Права доступа при отдаче загруженных файлов

Сообщение zelenin » 2016.01.26, 14:53

rugabarbo писал(а):Если хочется изучить грамотную реализацию хранения файлов в БД, рекомендую Phabricator (разрабатывается крутыми ребятами из Facebook): http://phabricator.org

Я на своих инстансах фабрикатора храню файлы в БД. Задаётся конфой: https://secure.phabricator.com/book/pha ... e_storage/
(cм.секцию Storage Engine)

Кстати, в этом же мане у них хорошо расписаны плюсы и минусы всех подходов к хранению.

Бонус в крутости бэкапов: не приходится бэкапить отдельно файлы и отдельно БД.
Бэкапится только БД.

Начать раскопки реализации можно отсюда: https://github.com/phacility/phabricato ... Engine.php
ну это о доп. абстракции над хранением, реализуемой например https://github.com/thephpleague/flysystem
больше ничего не вижу, что можно там подчерпнуть

lynicidn
Сообщения: 2221
Зарегистрирован: 2014.05.24, 15:12

Re: Права доступа при отдаче загруженных файлов

Сообщение lynicidn » 2016.01.26, 14:56

рекомендую https://github.com/yii2tech/file-storage

апд. хотя creocoder написал и для fly и она побольше имеет провайдеров, на счет бакетов (которые удобны) не скажу

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Права доступа при отдаче загруженных файлов

Сообщение zelenin » 2016.01.26, 14:59

lynicidn писал(а):рекомендую https://github.com/yii2tech/file-storage
кажется, flysystem более популярен, чем частное поделие, что даст уже готовые адаптеры к стораджам, которые не идут из коробки. К тому же есть хорошая интеграция под yii2. Но смысл и там и там одинаков.
UPD ты уже написал)

fly2k
Сообщения: 155
Зарегистрирован: 2013.03.19, 05:31

Re: Права доступа при отдаче загруженных файлов

Сообщение fly2k » 2016.01.27, 11:37

Огромное спасибо за ответы!

Пробую flysystem(враппер от creocoder). Правильно ли я понял что там нет возможности дописать в файл не получая текущее содержимое файла?
// Yii2Rulez!

Ответить