Django с aws s3 Ограничение видимости медиафайлов только для владельца

У меня есть модель, которая в основном сохраняет файлы/изображения для каждого конкретного пользователя, и только этот пользователь сможет просмотреть свой файл, другие пользователи не могут просматривать чужие личные файлы/изображения.


def user_id_directory(instance, file):
    return f"{instance.id}/{file}"

class PrivateFile(models.Model):
    owner = models.ForeignKey(to=UserModel, on_delete=models.CASCADE)
    image = models.ImageField(upload_to=user_id_directory)
    created = models.DateTimeField(auto_now_add=True)

Я использую s3 для сохранения медиафайлов, но использование s3 оставляет ссылку, доступ к которой может получить любой другой пользователь. Предположим, есть файл FILE1 с идентификатором 1, и я создал API, который возвращает следующую схему JSON.

{
"id": 1,
"user": 1,
"image": "example.aws.com/Media/File/1/image.png?AccessID=...."
"created": "2021-09-09 09:09:09.25555",
}

Если я дам эту ссылку любому, даже неавторизованный пользователь сможет просмотреть этот файл, используя эту ссылку, Как я могу ограничить его только пользователем, который является владельцем файла, только он/она сможет просмотреть его по ссылке.

Вернуться на верх