我想要开发一个应用,允许用户查看一些视频,但他们必须有权限或已购买该视频。我正在使用Django,并且我希望添加ngnix和gunicorn以提供媒体文件服务。但是我不确定一旦用户获取了视频的URL,如果他的付款过期或没有权限,我如何阻止他查看该视频。目前,我让Django来提供视频服务,并覆盖服务器方法。如果他无权访问视频,我会返回404。
我想要开发一个应用,允许用户查看一些视频,但他们必须有权限或已购买该视频。我正在使用Django,并且我希望添加ngnix和gunicorn以提供媒体文件服务。但是我不确定一旦用户获取了视频的URL,如果他的付款过期或没有权限,我如何阻止他查看该视频。目前,我让Django来提供视频服务,并覆盖服务器方法。如果他无权访问视频,我会返回404。
您需要实现所谓的“X-Sendfile功能”。假设您的付费文件将从位置/protected/
提供 - 您需要添加到nginx的配置中:
location /protected/ {
internal;
root /some/path;
}
mycoolflix.mp4
的文件时,您的应用程序需要添加头X-Accel-Redirect: /protected/mycoolflix.mp4
,并将文件/some/path/protected/mycoolflix.mp4
提供给用户。有关更多信息,请参见nginx文档这里和这里。
从视图中提供文件不是一个好主意 - 它会使您的Django进程忙于下载,直到下载完成,阻止它服务其他请求。