2009-10-02 3 views
0

вы знаете на YouTube, как только вы загрузили видео, оно попросит вас сделать это как публичным, так и частным. что он доступен любому. личный доступ к вам возможен только у вас оригинального загрузчика, и вы также должны войти в систему, чтобы сделать это. Мне нужно сделать что-то подобное. Я делаю приложение rails, которое использует QuickTime-прогрессивную загрузку вместо Flash, поэтому в основном я использую тег embed с src, указывающий на некоторый dns/video.mov. Но я не могу позволить, чтобы видео находились в общественном достоянии. Какие могут быть мои варианты на верхней части головы?приватизировать потоковое видео

ответ

0

Создайте сеансовый файл cookie, когда пользователь входит в систему. Этот файл cookie обычно содержит идентификатор сеанса какого-либо типа (длинную строку). Прикрепите этот идентификатор к URL-адресу фильма в качестве запроса (.../video.mov?ID=2387543462578).

Таким образом, ваш сервер может проверять идентификатор на текущих открытых сеансах. Если идентификатор недействителен, ответьте 403 (запрещено).

[EDIT] Поскольку вы помещаете файл в Rails_root/public/videos, Ruby автоматически обрабатывает загрузку в браузере для вас. Это поведение по умолчанию для любого файла, помещенного в папку public. Вам нужно поместить файлы в другое место и обрабатывать загрузки вручную. Проверьте источники Ruby и найдите обработчик для папки public; это должно дать вам представление о том, как это работает под капотами. Вы должны расширить этот класс с помощью дополнительного кода, чтобы проверить, действительно ли пользователь может загрузить файл.

+0

В моем приложении Rails есть как аутентификация, так и авторизация, я пока могу сказать, кто может использовать какое действие. Мое впечатление, что, скажем, у меня есть папка с видео пользователями под названием «видео» под Rails_root/public/videos. Таким образом, abc.mov теперь доступен через dns/videos/abc.mov прямо в адресной строке. Кажется, что Rails ничего не знает об этом. Если я не помещаю видео в общую папку, что может помешать этому, но у меня не было бы возможности внедрить его на обычную пользовательскую страницу, потому что встраивание имеет атрибут SRC, что мне нужно указать URL-адрес видео в. Как я могу использовать ваш метод? –

+0

См. Мои изменения: вам нужно добавить обработчик для другого URL-адреса, поэтому видео больше не является общедоступным для всех. –