Rails4:如何限制流媒体视频文件的访问?

sis*_*ssy 5 assets ruby-on-rails video-streaming html5-video ruby-on-rails-4

我想在我的页面中放置一些html5视频,但只能向登录的用户提供对此视频的访问权限(因此,未登录的用户必须看不到视频,如果他们有网址的话):

<video width="320" height="240" controls>
  <source src="/video.mp4" type="video/mp4">
  <source src="/video.m4v" type="video/m4v">
Your browser does not support the video tag.
</video>
Run Code Online (Sandbox Code Playgroud)

我在我的行动中尝试了类似的东西(使用前过滤器进行访问限制):

  def video
    respond_to do |format|
      format.m4v{
        send_data File.join([Rails.root, "public", "videos", "sample.m4v"]), type: 'video/m4v', disposition: :inline
      }
      format.mp4{
        send_data File.join([Rails.root, "public", "videos", "sample.mp4"]), type: 'video/mp4', disposition: :inline
      }
    end
  end
Run Code Online (Sandbox Code Playgroud)

但这是将文件作为附件发送,而不仅仅是提供它.

可能吗?如果是的话,怎么办呢?

谢谢

sis*_*ssy 1

现在这工作了,我缺少一个选项,那就是:stream => true。这样视频就可以以正确的方式提供。

send_file File.join([Rails.root, "private/videos", @lesson.link_video1 + ".#{extension}"]), 
      :disposition => :inline, :stream => true
Run Code Online (Sandbox Code Playgroud)

现在的问题是另一个问题,我在这里问的

Rails 服务大文件