5

好的,我知道不推荐通过 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:发布这个问题澄清了我的一些搜索想法,并且我遇到了文件包装扩展名。有没有人有足够的经验来验证它是一个可行的解决方案?

4

1 回答 1

5

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

于 2010-10-16T20:50:37.960 回答