аутентификация django для статических файлов - PullRequest
3 голосов
/ 14 июля 2011

У меня есть набор статических файлов (которые загружаются через приложение), таких как изображения, видео и т. Д., Которые должны быть предоставлены аутентифицированным пользователям (то есть их cookie зарегистрированы как аутентифицированные в сеансе).

Эти файлы являются отдельными и никак не связаны с другими статическими файлами мультимедиа, такими как css, javaacript и т. Д.

Учитывая, что мои статические файлы, которые должны быть аутентифицированы, будут довольно большими, я былИнтересно, что будет наиболее эффективным способом их обслуживания (кстати, я использую wsgi).

В настоящее время у меня есть это:

def return_large_file(request, p_filename):
    """                                                                         
    Send a file through Django without loading the whole file into              
    memory at once. The FileWrapper will turn the file object into an           
    iterator for chunks of 8KB.                                                 
    """
    if not os.path.exists(p_filename):
        raise Exception('File %s does not exist!')

    try:
        _content_type = mimetypes.guess_type(p_filename)
    except:
        _content_type = 'application/octet-stream'

    wrapper = FileWrapper(file(p_filename))
    response = HttpResponse(wrapper, content_type=_content_type)
    response['Content-Length'] = os.path.getsize(p_filename)
    return response

1 Ответ

1 голос
/ 14 июля 2011

В настоящее время я использую функцию, аналогичную той, которую вы используете выше.

Я думал, что как только производительность / эффективность станет проблемой, я буду использовать Apache mod-auth-external длявыполните мою пользовательскую авторизацию для данного файла.

Обратите внимание, я предлагаю этот ответ не на основании своего опыта, а в том, куда меня привели мои собственные исследования.

...