好,我 知道 通过Django服务媒体文件是一个 不建议. 。但是,我正处于我想通过Django型号使用细粒度访问控制提供“静态”文件的情况。

例子: :我想通过网络将我的电影库提供给自己。我经常旅行,只要我有互联网访问,我都希望能够在任何地方观看我的任何电影。因此,我将DVD撕裂,将其上传到我的服务器,并构建此简单的Django应用程序,并与某些应用程序构建 可嵌入的视频播放器.

为了避免任何法律影响,我想确保只有具有适当权限的记录使用者(即我本人和生活在同一家庭中的人们,就像我一样,可以在他们方便的情况下访问真正的DVD),但否认它给其他用户(即在我的博客上发表评论的人)并返回HTTP 404。

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

问题: 能够 我实现了这个效果 没有 直接通过Django视图服务媒体文件?我有什么选择?

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

编辑: :发布这个问题阐明了我的一些搜索想法,我遇到了 mod_python' 文件包装器扩展名. 。是否有人有足够的经验来验证它是可行的解决方案?

有帮助吗?

解决方案

是的,您可以将Apache的Django身份验证插入。看到这个方法:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top