Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как грамотно раздать права пользователям на доступ к файлам других пользователей? / 5 сообщений из 5, страница 1 из 1
06.04.2017, 01:09
    #39433844
palladin600
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно раздать права пользователям на доступ к файлам других пользователей?
Всем доброго времени!
В общем, такой вопрос встал:
есть сотня-другая пользователей, у каждого есть свой набор неких файлов, которые он хотел бы хранить на сервере, чтобы делится файлами с другими пользователями, но не со всеми а выборочно. (наподобие как вот права на фтп папкам раздаются)

Т.е. например, у Пользователя 1 есть три файла, и он бы хотел, чтобы пользователи №2 и №4 могли у него скачивать эти файлы.
То как лучше хранение файлов организовать: в БД или в директории?

Я предлагал коллеге делать папку на сервере с названием GUID пользователя, пользователь туда закидывает файлы,
а уже чтение для других пользователей этих файлов задаётся через доступ фс.
Но он говорит, что тогда проект не будет мобильным, и придётся тягать с собой все эти разрешения и папки в случае переезда хостинга. И предлагает хранить файлы в БД. Но как тогда тут организовать контроль над раздачей прав?


Может кто-то сталкивался с похожей задачей, то какое вы приняли решение?
Сервер виндовый 2008 R2, IIS7.5, БД MS SQL 2012.
...
Рейтинг: 0 / 0
06.04.2017, 08:19
    #39433898
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно раздать права пользователям на доступ к файлам других пользователей?
Не обязательно файлы в БД хранить. Сделай папку с правами на запись и давай файлам случайные имена, можно GUID, чтобы перебором не найти чужой файл.
А в БД храни реальные имена, какой файл какому пользователю принадлежит и кому он его разрешил читать.
...
Рейтинг: 0 / 0
06.04.2017, 18:40
    #39434423
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно раздать права пользователям на доступ к файлам других пользователей?
palladin600И предлагает хранить файлы в БД.

Файлы в БД хранить не нужно, нужно хранить релятивный путь к файлу.
Файлы лучше складывать в папки пачками не больше 1000 файлов на папку.
Что-то там про переезд хостинга.. представь себе бекап на несколько терабайт, из которых файлы это 90% от всей базы как минимум, а то и больше. Файлы перекинуть гораздо легче, когда они в папках.
Контроль над раздачей прав решайте на уровне записей в БД, запись это ID файла и релятивный путь к папке + имя файла.

Для хранения файлов в папках лучше использовать GUID, а не оригинальное имя файла, оригинальное имя файла хранить в БД. Иначе может прилететь файл с большим именем, который не запишется в указанную директорию из-за ограничений на длину пути к файлу.


palladin600Может кто-то сталкивался с похожей задачей, то какое вы приняли решение?

Сейчас мы храним файлы в MongoDB GridFS с репликацией.
...
Рейтинг: 0 / 0
10.04.2017, 09:32
    #39435640
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно раздать права пользователям на доступ к файлам других пользователей?
hVosttСейчас мы храним файлы в MongoDB GridFS с репликацией.
И сколько их у вас? Каков средний размер?
...
Рейтинг: 0 / 0
10.04.2017, 14:51
    #39435883
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно раздать права пользователям на доступ к файлам других пользователей?
skyANA,

Сейчас пока используем в одном небольшом проекте, всего одна реплика, без кластеризации, объём данных перевалил за 1 Тб, это совсем немного.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как грамотно раздать права пользователям на доступ к файлам других пользователей? / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]