0

Django モデルの 1 つに ImageField があります。これらの各イメージには、それらにアクセスできるユーザー (またはユーザーのグループ) がいます。他のユーザーはそれらを見ることができません。

ImageField は、イメージ ファイルをメディア ルートに格納します。画像パスを介したその画像の Web 要求) は、django をバイパスし、Apache によって直接処理されます。

画像のリクエストを許可されたユーザーのみが実際に画像を取得できるようにするにはどうすればよいですか?

4

1 に答える 1

2

イメージを提供するための新しいビューを追加し、イメージを他のパスに保存します。apache cant server new path

今、新しいビューでユーザーサーブ画像のグループをチェックし、そうでない場合はユーザーが403を送信します

@login_required
def serve_file(request, context):
    if <check if they have access to the file>:
        filename = "/var/www/myfile.xyz" 
        response = HttpResponse(mimetype='application/force-download') 
        response['Content-Disposition']='attachment;filename="%s"'%filename
        response["X-Sendfile"] = filename
        response['Content-length'] = os.stat("debug.py").st_size
        return response
    return <error state>
于 2012-08-15T03:04:59.423 に答える