我想构建一个应用程序,让用户看到一些视频,只要他们有权限或者他们为该视频付费。我正在使用Django,我想添加ngnix和gunicorn来提供媒体文件。 我不确定一旦用户有视频的网址,如果他的付款过期或他没有权限,我怎么能阻止他看不到视频。现在我让django为视频服务,我覆盖了服务器方法,如果他无法访问视频,我会返回404.
答案 0 :(得分:2)
您需要实现所谓的“X-Sendfile功能”。假设您的付费文件将从位置StackPanel
提供 - 您需要添加到nginx的配置中:
/protected/
然后,当您想要为您的用户提供名为location /protected/ {
internal;
root /some/path;
}
的文件时,您的应用需要添加标题mycoolflix.mp4
,并且文件X-Accel-Redirect: /protected/mycoolflix.mp4
将会提供给用户。有关nginx文档here和here的更多信息。
从您的视图中提供文件并不是一个好主意 - 它会使您的一个Django进程忙,直到下载完成,从而阻止它提供其他请求。