【问题标题】:Django: control access to "static" filesDjango:控制对“静态”文件的访问
【发布时间】:2011-04-26 10:14:10
【问题描述】:

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

示例:我想通过网络为自己提供电影库。我经常旅行,我希望无论身在何处都能观看我的任何电影,只要我有互联网接入。所以我撕下我的 DVD,将它们上传到我的服务器并构建这个简单的 Django 应用程序以及一些 embeddable video player

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

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

问题可以在不直接通过 Django 视图提供媒体文件的情况下实现此效果吗?我有哪些选择?

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

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

【问题讨论】:

    标签: django video mod-wsgi static-files


    【解决方案1】:

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

    【讨论】:

    • 不错的发现!需要一些(次要的)自定义模组才能开始工作,但我认为这是我最好的选择!
    • 链接不再有效。有人知道这是用新方法完成的吗?
    • @AlexStewart:看起来页面刚刚被移动;我修复了链接。谢谢!
    猜你喜欢
    • 2012-04-06
    • 2017-12-23
    • 1970-01-01
    • 2013-11-22
    • 2021-05-20
    • 2021-08-14
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多