好的,我知道通过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}}。有没有人有足够的经验来验证它是一个可行的解决方案?
答案 0 :(得分:4)
是的,您可以从Apache挂钩Django的身份验证。请参阅此方法: