あなたの質問を理解するのは少し難しいですが、私があなたがやりたいことを正しく理解しているなら、あなたの最善の策はおそらくあなたのPythonフレームワーク内でこの機能を探すことではありません。この理由は、ほとんどのフレームワーク(少なくともdjango
、flask
私が使用したもの)は、本番環境に対応したサーバーとして構築されておらず、主に動的なWebページテンプレートとURLルーティングを提供することを目的としているためです。他のサーバー側機能として。静的ファイルとメディアの配信は、通常、Apacheなどの実稼働サーバーで行うのが最適gunicorn
です。
そのため、たとえばdjango
ドキュメントでは、具体的に次のように述べています。
Django自体は、画像、スタイルシート、ビデオなどの静的(メディア)ファイルを提供しません。その仕事は、選択したWebサーバーに任せます。
ここでの理由は、Apache、lighttpd、Cherokeeなどの標準のWebサーバーは、Webアプリケーションフレームワークよりも静的ファイルの提供においてはるかに微調整されているためです。
この認証は、Apacheであろうと他の何かであろうと、おそらくサーバーによってより適切に処理されます。
フレームワークを使用してファイルのダウンロードを保護するためのオプションの1つは、認証が必要な別のファイルの背後に実際のファイルURLを隠し、場合によってはファイルの実際のURLを変更することです。これは完全ではなく、ファイルを完全に保護することはできませんが、うまくいく可能性があります。例django
:
# urls.py
...
url('/my/file/url', my_file_download_function),
...
# views.py
from django.shortcuts import redirect
def my_file_download_function(request):
if request.GET.get('apikey', None) == CORRECT_API_KEY:
return redirect('/real/URL/to/file')
else:
return HttpResponse(status=401)
繰り返しますが、私は必ずしもこれをお勧めしませんが、これはフレームワークでそれを行うための1つのオプションです。
更新:
新しく投稿されたコメントを読んだ後、あなたの最善の策はiMom0によって投稿されたと思います。これには、Djangoで静的ファイルを提供する前の認証に関するリンクが含まれています。