我可以为 media django 媒体文件添加权限吗?

jal*_*nga 4 python django nginx gunicorn

我想构建一个应用程序,并让用户看到一些视频,只要他们有权限或他们为该视频付费。我正在使用 Django,我想添加 ngnix 和 gunicorn 来提供媒体文件。我不确定一旦用户拥有视频的网址,如果他的付款已过期或他没有权限,我如何阻止他看不到视频。现在我让 django 提供视频并覆盖服务器方法,如果他无权访问视频,我将返回 404。

raf*_*lmp 6

您需要实现所谓的“X-Sendfile 功能”。假设您的付费文件将从位置提供/protected/- 您需要添加到 nginx 的配置:

location /protected/ {
    internal;
    root   /some/path;
}
Run Code Online (Sandbox Code Playgroud)

那么当你想为你的用户服务时,一个名为mycoolflix.mp4你的应用程序的文件需要添加标题X-Accel-Redirect: /protected/mycoolflix.mp4,该文件/some/path/protected/mycoolflix.mp4将被提供给用户。此处此处的 nginx 文档中的更多信息。从您的视图提供文件不是一个好主意 - 它使您的 Django 进程之一在下载完成之前一直处于忙碌状态,从而阻止它为其他请求提供服务。