在Django站点中保护静态媒体访问

Tom*_*rle 15 apache authentication django

我正在建立一个注册用户可以上传文件的网站.然后通过Apache提供这些文件.只有登录的用户才能访问这些文件.

我已阅读此页面,但似乎人们必须登录两次以访问网站和媒体,每次使用不同类型的登录框.

有没有办法解决这个问题,还是有其他办法限制使用Django身份验证数据库访问Apache所提供的静态媒体?

我正在使用mod_python.

编辑:我是如何结束的阅读范大风的答案后解决这个这个:

  1. 切换到WSGI.
  2. 已安装mod_xsendfile
  3. 将所有公共媒体文件移动到/ media/public中的子文件夹中
  4. 使用Alias/media/public /var/www.../media/public添加了对公用文件夹的访问权限
  5. 添加了WSGIScriptAlias/media/protected//var/www.../apache/django.wsgi(与网站其余部分相同的处理程序)
  6. 添加了XSendFile On和XSendFileAllowAbove On
  7. 对于Django应用程序,我为/ media/protected添加了一个urlconf,它基本上完成了这里的操作,仅针对我的身份验证系统进行了修改.它处理诸如/ media/protected/GROUP_ID/file之类的URL,以便只有GROUP的成员才能下载文件.

Van*_*ale 11

通常的方法是将特殊标头传回Web服务器.

您可以使用x-accel-redirect在nginx中执行此操作,如此Django代码段中所示.

对于Apache,使用mod_xsendfile模块(Django用户邮件列表上的讨论和示例)应该非常相似.