2013-03-01 4 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의 경우 'return $ this-> redirct (...)' 지금 자격 증명을 어디에 저장합니까? 비디오 엔티티에서? – mblaettermann

+7

이렇게하는 "올바른"방법은 ACL이 될 것이라고 생각합니다. – mblaettermann

+0

로그인 양식을 구현하기 만하면되지만, 리디렉션, 전달 및 기타 방법을 모르겠습니다. –

답변

0

나는 내가 운영하는 웹 사이트에서 이미지 파일을 보호해야 할 비슷한 필요성이 있습니다.

내가 수행 한 작업은 chmod 700 권한이있는 하위 디렉토리에 개인용 파일을 넣은 다음 웹에 액세스 할 수없는 디렉토리에서 파일을 읽는 DATA URI을 생성하는 함수를 호출하기 위해 if 문을 사용하고 파일을 Base64로 인코딩합니다. 그 결과로 생성 된 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')?>" /> 

파일 유형을 적절하게 변경하면됩니다.

관련 문제