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

时间:2016-07-21 19:58:24

标签: python django nginx gunicorn

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

1 个答案:

答案 0 :(得分:2)

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

/protected/

然后,当您想要为您的用户提供名为location /protected/ { internal; root /some/path; } 的文件时,您的应用需要添加标题mycoolflix.mp4,并且文件X-Accel-Redirect: /protected/mycoolflix.mp4将会提供给用户。有关nginx文档herehere的更多信息。 从您的视图中提供文件并不是一个好主意 - 它会使您的一个Django进程忙,直到下载完成,从而阻止它提供其他请求。