Как обслуживать загруженные файлы только для аутентифицированных пользователей в Django, использующих Amazon S3 и Boto? - PullRequest
2 голосов
/ 08 марта 2012

У меня есть такой случай:

У меня есть панель backoffice.Прошедшие проверку пользователи могут загружать файлы в систему.Мой код Django загружает файлы на сервер Amazon S3, и он становится общедоступным.

Теперь я хочу, чтобы люди, которые непосредственно пишут URL-адрес изображения, не видели файлы (скажем, фотографии), но пользователи, прошедшие проверкуможно посмотреть файлы.

Возможно ли это?

1 Ответ

3 голосов
/ 08 марта 2012

Вы можете использовать @login_required декоратор в представлении, которое показывает людям изображение, если они вводят URL-адрес, только если они вошли в систему. Раздел User Auth документации Django охватывает все это.

В качестве альтернативы, вы можете проверить, вошел ли пользователь через request.user в представлении, а затем не передавать подробности изображения в контексте в шаблон.

Или не отображать части шаблона, если пользователь не вошел в систему (я думаю, вероятно, самый уродливый метод)

{% if user.is_authenticated %}
    # Do the template stuff
{% endif %}

Что касается ограничения доступа на s3, то оно немного сложнее. Вам нужно сделать ваши файлы закрытыми в корзине, а затем сгенерировать URL-адреса в Django, которые имеют строку запроса, позволяющую авторизованному пользователю получить доступ для загрузки конкретного объекта s3 с ограничением по времени. Подробности об этом можно найти в документации s3 . Подобный вопрос был задан ранее здесь на SO.

...