Права доступа на видео-контент

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
kuzmitch1985
Сообщения: 9
Зарегистрирован: 2013.04.16, 07:11

Права доступа на видео-контент

Сообщение kuzmitch1985 »

Всем доброго времени суток! На разрабатываемом мной сайте встала необходимость защиты видео от несанкционированного просмотра. Перерыл кучу вариантов - пришел к следующему: Все видео будет хранится в папке, защищенной от доступа с помощью .htaccess. Видео решил отдавать php-скриптом, ссылки на видео непрямые. С вопросом проверки прав доступа все более-менее понятно, но возникла следующая проблема: не воспроизводится видео во flash-плеере. Делаю так: Во вьюхе

Код: Выделить всё

<div id="demo" class="player"></div>
<script>
    $(document).ready(function() {
        jwplayer('demo').setup({
            file: encodeURIComponent('/video/out?alias=v1'),
            provider: 'video',
            write: 'mediaspace',
        });
    });
</script>
В контроллере VideoController в экшене Out

Код: Выделить всё

public function actionOut($alias)
 {
       if ( !self::checkAccess($filename) ) {
           die("Access not available!");
       }

       $filename = self::getNameByAlias($alias);
        $location = Yii::getPathOfAlias('webroot') . '/uploads/videos/' . $filename;
        $ctype = "video/x-flv";
               
        header("Content-type: " . $ctype);
        header("Content-type: filename=" . $filename);
        header("Cache-Control: no-cache, no-store, max-age=0, must-revalidate");
        header("Cache-Control: post-check=0, pre-check=0", false);
        header("Expires: Mon, 20 Dec 1980 00:00:00 GMT");
        header("Pragma: no-cache");
        header("Content-Transfer-Encoding: binary");
        header("Content-Description: File Transfer");
        
        @readfile($location) OR die("File not found.");
 }
 
В итоге если ввести в адресную строку браузера http://mbevents.ru/video/out?alias=v1 видео отдается на скачивание, но в плеере не воспроизводится, выводит сообщение об ошибке file not found. Firebug тоже ругается "NetworkError: 404 Not Found - http://mbevents.loc/video/out%3Falias%3Dv1". Копирую эту ссылку в адресную строку броузера - выскакивает исключение Yii - Системе не удалось найти запрашиваемое действие "out?alias=v1". Уж и не знаю как быть.
Если убрать в скрипте инициализации плеера encodeURIComponent то плеер выдает No playable sources found.
Уж и не знаю как исправить эту ситуацию. Может изначально задачу неправильно решаю? Заранее спасибо за комментарии!
brntsrs
Сообщения: 40
Зарегистрирован: 2012.07.16, 16:07

Re: Права доступа на видео-контент

Сообщение brntsrs »

А через слэши "/video/out/alias/v1" не получится завернуть?
kuzmitch1985
Сообщения: 9
Зарегистрирован: 2013.04.16, 07:11

Re: Права доступа на видео-контент

Сообщение kuzmitch1985 »

Еще нет, сейчас попробую
kuzmitch1985
Сообщения: 9
Зарегистрирован: 2013.04.16, 07:11

Re: Права доступа на видео-контент

Сообщение kuzmitch1985 »

Супер! Это помогло. А вообще интересно, почему не прокатывают экранированные ссылки?
brntsrs
Сообщения: 40
Зарегистрирован: 2012.07.16, 16:07

Re: Права доступа на видео-контент

Сообщение brntsrs »

Их для того и экранируют, чтобы они не воспринимались как спецсимволы адресации.
Ответить