Django:控制对 "static"文件的访问

标签 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 View 直接提供媒体文件的情况下实现这种效果?我有哪些选择?

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

编辑:发布这个问题澄清了我对搜索的一些想法,我遇到了 mod_pythonfile wrapper extension .有没有人对此有足够的经验来验证它是一个可行的解决方案?

最佳答案

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

关于Django:控制对 "static"文件的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3950675/

相关文章:

django - python-social-auth 未获取正确的 Google OAuth2 详细信息

linux - 将视频编解码器集成到 gstreamer 或 vlc 中

windows - FFMPEG Concat 失败 - 系统找不到指定的文件

asp.net - 来自 ashx handler 的 Html5 视频源

django - 在 Apache 上设置 Django 应用程序后 CSRF 失败

django - 如何在 Django 应用程序中使用 SSL(使用 mod_wsgi 和 virtualenv 部署)

python - 配置不当 : Error importing middleware django. middleware.common: "No module named _md5"

python - Django 模型降序/嵌套查询

python - Django DateTimeField auto_now_add 不工作

django - 如何在 Django-registration 1.0 中添加额外的(自定义)字段