我正在建立一个注册用户可以上传文件的网站。然后通过 Apache 提供这些文件。只有登录的用户才应该能够访问这些文件。
我读过了这一页 http://docs.djangoproject.com/en/dev/howto/apache-auth/但人们似乎必须登录两次才能访问网站和媒体,每次使用不同类型的登录框。
有没有办法解决这个问题,或者有其他方法可以使用 Django 身份验证数据库来限制对 Apache 提供的静态媒体的访问?
我正在使用 mod_python。
EDIT:在阅读范盖尔的答案后我是如何解决这个问题的this http://groups.google.com/group/django-users/browse_thread/thread/b4ceae1956e003e5/:
- 切换到 WSGI。
- 已安装mod_x发送文件 http://tn123.ath.cx/mod_xsendfile/
- 将所有公共媒体文件移至 /media/public 中的子文件夹中
- 添加了使用别名 /media/public /var/www.../media/public 对公共文件夹的访问
- 添加了 WSGIScriptAlias /media/protected/ /var/www.../apache/django.wsgi (与站点其余部分相同的处理程序)
- 添加了 XSendFile On 和 XSendFileAllowAbove On
- 在 Django 应用程序中,我为 /media/protected 添加了一个 urlconf,它的作用基本上是这样的here http://groups.google.com/group/django-users/msg/f15c3de2417b120e,仅针对我的身份验证系统进行修改。它处理 /media/protected/GROUP_ID/file 等 url,以便只有 GROUP 的成员才能下载文件。
通常的方法是将一个特殊的标头传回 Web 服务器。
你可以这样做nginx http://wiki.nginx.org/NginxXSendfile使用 x-accel-redirect 如下所示Django 片段 http://www.djangosnippets.org/snippets/491/.
对于 Apache,它应该非常相似,使用mod_x发送文件 http://tn123.ath.cx/mod_xsendfile/模块 (讨论和例子 http://groups.google.com/group/django-developers/browse_thread/thread/297cbd7dec84ffb8在 Django 用户邮件列表中)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)