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

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

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


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

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

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


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

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

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


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