Google Storage - Django - Как обеспечить доступ к файлам видео и изображений на основе Django аутентификации пользователя? - PullRequest
0 голосов
/ 24 марта 2020

У меня есть Django Приложение, в которое пользователи могут входить с помощью учетных записей электронной почты, Google или Facebook. У каждого пользователя есть мультимедийные файлы, хранящиеся в Google Storage. Когда я делаю корзину Google Cloud общедоступной, она работает как положено, но есть ли способ сделать каждый объект Google Storage доступным только для конкретного пользователя? Каков наилучший способ добиться этого?

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Чтобы разрешить доступ к определенному ресурсу в течение ограниченного периода времени, вам необходимо подписать URL-адрес: Подписанные URL-адреса

В зависимости от вашего варианта использования существует несколько способов сделать это:

  1. Если файлы принадлежат и доступны только одному пользователю, вы можете сохранить файлы в Google Cloud Storage Bucket по пути, содержащему userId (например: users/{userId}/images) и вы разрешаете только пользователю с userId получить Signed Url для требуемого файла.

  2. Если файлы доступны для определенных пользователей на основе некоторых логик c, вы можете сохраните файлы в таблице базы данных GoogleCloudStorageFile, создайте Many-To-Many отношение между GoogleCloudStorageFile и User и генерируйте подписанные URL-адреса для ресурса, только если пользователь связан с этим файлом.

1 голос
/ 24 марта 2020

В качестве альтернативы вы можете использовать ваш контейнер в качестве облачного хранилища FUSE-диска , это решение позволяет монтировать ваш каталог как каталог на Linux.

С помощью диска FUSE вы можете реализовать контроль доступа из вашего приложения, как и любого другого локального ресурса, без дополнительной библиотеки Google.

...