2013-05-06 109 views
1

我知道,通过视图和网址分派直接从django提供文件和图片不是一种好方法,但如果通过服务器(Apache)提供这些文件和图片,整个世界都可以看到他们。如果某些文件和图片对于用户是私密的,只有连接的用户才能看到这些文件或图片?在这种情况下,我需要由django自己来服务吗?从Django提供媒体文件

回答

0

要提供私人文档,您应该使用执行安全检查的Python视图。

这是example

0

如果您使用的是Apache与mod_wsgi的,那么你可以使用mod_xsendfile

你基本上是寻找运行通过Django的一些资源的授权,通过一个头回阿帕奇说,“嘿,伙计,减仓。这个用户可以访问这个'Apache'然后处理返回资源。

粗糙步骤(如,粗糙不够,你需要使用我提供为起点的链接,做一些更多的研究)

Apache需要知道哪些资源是公共的,哪些不是。在这两种类型的媒体下创建一个子目录(为什么不去crazxy并称它们为/ media/public /和/ media/private /)

为公共目录设置别名,为受保护的目录设置WSGIScriptAlias ,受保护的别名将指向你的主站处理器(可能django.wsgi)

添加设置虚拟主机: XSendFile On XSendFileAllowAbove On

添加URL配置到你的Django的应用程序,处理/媒体/保护/ {}什么并通过您的身份验证Django应用程序身份验证逻辑路由它。这样的一个例子是here

用于上述的有用的片段是here 和良好的措施here

另一示例