2013-03-01 48 views
1

我有一个视频列表。少数是公开的,其他人是私人的。这些有登录名和密码,但它不是一个登录名/密码,所有私人视频都有自己的保护。对于时刻:如何动态保护某些页面?

class VideoController extends Controller 
{ 
    /** 
    * @Route("/videos", name="videos") 
    * @Template() 
    */ 
    public function indexAction() 
    { 
     $videos = $this->getDoctrine()->getRepository('CcTestBundle:Video')->findAll(); 
     return array('videos' => $videos); 
    } 

    /** 
    * @Route("/video/{videoId}", name="video_show") 
    * @Template() 
    */ 
    public function showAction($videoId) 
    { 
     $video = $this->getDoctrine()->getRepository('CcTestBundle:Video')->find($videoId); 
     if($video->isSecured()) { 
      **????** 
     } 
     else return array('video' => $video); 
    } 

    /** 
    * @Route("/video/{videoId}/login", name="video_login") 
    * @Template() 
    */ 
    public function loginAction($video) 
    { 
     **????** 
    } 

    /** 
    * @Route("/video/{videoId}/login_check", name="video_security_check") 
    */ 
    public function securityCheckAction($videoId) 
    { 
     **????** 
    } 
} 

我不知道该怎么办,如何使用正和重定向操作。你可以帮帮我吗 ?

+0

用于redircts做'返回$这个 - > redirct(...)' 你在哪里存储您的凭证呢?在视频实体? – mblaettermann 2013-03-01 17:15:52

+7

我认为,“正确”的方式是ACL。 – mblaettermann 2013-03-01 17:17:02

+0

我只需要实现登录表单,但我不知道如何做,重定向,转发等。 – 2013-03-12 10:05:45

回答

0

我有一个类似的需求来保护我运行的网站上的图像文件。

我所做的就是把我想的私人文件中的子目录与chmod 700权限,然后使用if语句来调用生成DATA URI读取从网络inaccessable目录中的文件的功能,编码的文件为Base64 fly并将生成的Base64编码插入PHP页面以供浏览器读取。由于它们的大小,我不知道这将如何与视频一起工作,但这是功能。

function data_uri($file, $mime) { 
    $contents = file_get_contents($file); 
    $base64 = base64_encode($contents); 
    return "data:$mime;base64,$base64"; 
} 

然后我只是调用我想要的图片的功能。

<input class="map" name="pos" type="image" src="<?php echo data_uri("./img/overlay_$sessionid.png", 'image/png')?>" /> 

你只需要相应地改变你的文件类型。