Django: контроль доступа к «статическим» файлам - PullRequest
3 голосов
/ 17 октября 2010

Хорошо, я знаю , что передача медиа-файлов через Django не рекомендуется . Однако я нахожусь в ситуации, когда мне бы хотелось обслуживать «статические» файлы, используя детальный контроль доступа через модели Django.

Пример : Я хочу предоставить свою библиотеку фильмов себе через Интернет. Я часто путешествую, и я хотел бы иметь возможность просматривать любые мои фильмы, где бы я ни был, при условии, что у меня есть доступ в Интернет. Поэтому я копирую свои DVD, загружаю их на свой сервер и создаю это простое приложение Django в сочетании с встраиваемым видеопроигрывателем .

Чтобы избежать каких-либо правовых последствий, я хотел бы обеспечить, чтобы только зарегистрированные пользователи с соответствующими правами доступа (т.е. я и люди, живущие в одной семье, которые могут, как и я, имеют доступ к настоящим DVD-дискам в удобное для них время) , но отказывает в этом другим пользователям (т.е. людям, которые разместили комментарии в моем блоге) и возвращает HTTP 404.

Теперь, обслуживание этих файлов напрямую с использованием Apache и mod_wsgi довольно проблематично, потому что, когда приходит HTTP-запрос для файлов мультимедиа (то есть http://video.mywebsite.com/my-favorite-movie/), мне нужно проверить по моей пользовательской базе данных, что человек на другом Конец имеет соответствующие разрешения.

Вопрос : можно Я достигну этого эффекта без подачи медиафайлов непосредственно через представление Django? Какие у меня варианты?

Одна вещь, о которой я подумал, - это написать простой скрипт, который берет идентификатор сеанса и фрагмент видео и возвращает некоторое логическое значение, указывающее, может ли пользователь (или не может) получить доступ к видеофайлу. Затем каким-то образом попросите mod_wsgi выполнить этот сценарий перед доступом к запрошенному URL-адресу и вернуть HTTP 404, если сценарий не выполнен. Тем не менее, я понятия не имею, возможно ли это.

Редактировать : публикация этого вопроса прояснила некоторые мои идеи для поиска, и я столкнулся с mod_python расширением оболочки для файлов . У кого-нибудь есть достаточно опыта, чтобы подтвердить, что это жизнеспособное решение?

1 Ответ

4 голосов
/ 17 октября 2010

Да, вы можете подключиться к аутентификации Django из Apache. Смотрите это с практическими рекомендациями:

...