Django:控制对“静态”文件的访问

时间:2010-10-16 20:37:05

标签: django video mod-wsgi static-files

好的,我知道通过Django提供媒体文件是not recommended。但是,我想通过Django模型使用细粒度访问控制来提供“静态”文件。

示例:我想通过网络向我自己提供电影库。我经常旅行,无论我在哪里,我都希望能够查看我的任何电影,前提是我可以访问互联网。所以我翻录我的DVD,将它们上传到我的服务器并构建这个简单的Django应用程序以及一些embeddable video player

为了避免任何法律后果,我想确保只有具有适当权限的登录用户(即我和居住在同一家庭的人,可以像我一样,在方便时访问真实的DVD) ,但拒绝其他用户(即在我的博客上发表评论的人)并返回HTTP 404。

现在,使用Apache和mod_wsgi直接提供这些文件相当麻烦,因为当媒体文件的HTTP请求(即http://video.mywebsite.com/my-favorite-movie/)进来时,我需要针对我的用户数据库验证另一端的人有适当的权限。

问题可以我实现了这种效果没有直接通过Django视图提供媒体文件?我有什么选择?

我想到的一件事是编写一个简单的脚本,它接受会话ID和视频的slug并返回一些布尔值,指示用户是否可以(或可能不)访问视频文件。然后,以某种方式请求mod_wsgi在访问请求的URL之前执行此脚本,并在脚本失败时返回HTTP 404。但是,如果可能的话,我也不知道。

修改:发布此问题澄清了我对搜索的一些看法,我遇到了mod_python的{​​{3}}。有没有人有足够的经验来验证它是一个可行的解决方案?

1 个答案:

答案 0 :(得分:4)

是的,您可以从Apache挂钩Django的身份验证。请参阅此方法: