我知道通过视图和 url 调度直接从 django 提供文件和图片不是一个好方法,但是如果这些文件和图片是通过服务器 (Apache) 提供的,那么全世界都可以看到它们。如果某些文件和图片对用户是私有的,并且只有连接的用户可以看到这些文件或图片怎么办?在这种情况下,我需要由 django 自己服务吗?
问问题
509 次
2 回答
0
要提供私人文档,您应该使用执行安全检查的 Python 视图。
这是一个例子。
于 2013-05-06T14:42:16.437 回答
0
如果您将 Apache 与 mod_wsgi 一起使用,则可以使用mod_xsendfile
您实际上是希望通过 Django 运行某些资源的授权,将标头传递回 Apache 说“嘿,伙计,放轻松。这个用户可以访问这个'Apache 将处理返回资源。
粗略的步骤(如,足够粗略,您需要使用我提供的链接作为起点进行更多研究)
Apache 需要知道哪些资源是公开的,哪些不是。在 media 下为这两种类型创建一个子目录(为什么不去疯狂并称它们为 /media/public/ 和 /media/private/)
为公共目录设置一个别名,为受保护的目录设置一个 WSGIScriptAlias,受保护的别名将指向您的主站点处理程序(可能是 django.wsgi)
将设置添加到虚拟主机:
XSendFile On
XSendFileAllowAbove On
将 urlconf 添加到您的 Django 应用程序,该应用程序处理 /media/protected/{whatever} 并通过您的身份验证 Django 应用程序身份验证逻辑对其进行路由。这方面的一个例子是here
于 2013-05-06T14:56:01.447 回答