【发布时间】:2011-04-26 10:14:10
【问题描述】:
好的,我知道通过 Django 提供媒体文件是 not recommended。但是,我想通过 Django 模型使用细粒度的访问控制来提供“静态”文件。
示例:我想通过网络为自己提供电影库。我经常旅行,我希望无论身在何处都能观看我的任何电影,只要我有互联网接入。所以我撕下我的 DVD,将它们上传到我的服务器并构建这个简单的 Django 应用程序以及一些 embeddable video player。
为避免任何法律后果,我想确保只有具有适当权限的登录用户(即我自己和住在同一家庭的人,他们可以像我一样在方便时访问真实的 DVD) ,但拒绝其他用户(即在我的博客上发布 cmets 的人)并返回 HTTP 404。
现在,直接使用 Apache 和 mod_wsgi 提供这些文件相当麻烦,因为当对媒体文件(即 http://video.mywebsite.com/my-favorite-movie/)的 HTTP 请求进入时,我需要根据我的用户数据库验证另一个人end 具有适当的权限。
问题:可以在不直接通过 Django 视图提供媒体文件的情况下实现此效果吗?我有哪些选择?
我确实想到的一件事是编写一个简单的脚本,该脚本采用会话 ID 和视频的 slug 并返回一些布尔值,指示用户是否可以(或不可以)访问视频文件。然后,以某种方式请求mod_wsgi 在访问请求的 URL 之前执行此脚本,如果脚本失败则返回 HTTP 404。但是,我不知道这是否可能。
编辑:发布此问题澄清了我对搜索的一些想法,我遇到了mod_python 的file wrapper extension。有没有人有足够的经验来验证它是一个可行的解决方案?
【问题讨论】:
标签: django video mod-wsgi static-files