2012-06-20 2 views
1

관리자 백엔드가있는 심포니 1.4 응용 프로그램이 있는데 인증 된 사용자 만 사용할 수있는 pdf/이미지를 만들고 싶습니다. 인증 프로세스는 심포니에 의해 처리됩니다.응용 프로그램 인증을 포함한 파일 다운로드

인증 된 사용자 만 파일을 다운로드 할 수 있도록하려면 어떻게해야합니까? php의 memory_limit 설정을 초과하는 파일까지도 다운로드 할 수 있습니까?

내가 사용하는 웹 서버는 nginx입니다.

답변

4

X-Sendfile (/ X-Accel-Redirect)을 사용하면 PHP 스크립트가 적절한 헤더와 끝을 보낸 후 nginx가 파일을 제공합니다. This seems a proper explanation.

  1. 구성 nginx를 다음과 같이 웹에서 "보호"라는 이름의 디렉토리 생성 :
  2. 는 심포니 경로를 생성을
  3. 만들

    greg0ire은> 다음 심포니 1.4의 nginx 내 구현 심포니 액션

Nginx 구성 :

location /secure/ { 
    internal; 
    } 

심포니 정확히 내가 무엇을 찾고 같은

<?php 
class SecureDownloadAction extends sfAction 
{ 
    public function execute($request) 
    { 
    $this->getResponse()->setHttpHeader(
     "X-Accel-Redirect", 
     "/secure/" . $request->getParameter('filename')); 
    $this->getResponse()->setHttpHeader(
     "Content-Disposition", 
     "attachement; filename=". $request->getParameter('filename')); 
    return sfView::HEADER_ONLY; 
    } 
} 
+0

이 보이는

SecureDownload: url: /anything-you-want-but-secure/:filename options: segment_separators: ['/'] # filenames often contain dots params: module: YourModule action: secureDownload 

심포니 액션 라우팅! – greg0ire

+0

@ greg0ire 헤더가 잘 전송되었는지 확인한 다음 nginx가 파일을 제공하고 있습니까? Lighttpd에서'X-Sendfile'을 사용하여 이러한 동작을 구현하려고했지만 symfony를 사용하여 올바른 헤더를 보내지 못했습니다 .. – j0k

+0

@jok : 방화 광으로 확인할 수는 없습니까? 나는 다른 체크를했다. 나는/secure/file.txt를 요청할 때 404를 얻었고 심포니는'/ anything-you-want-but-secure/file.txt'에 접근하기 전에 인증을 요구한다. 그것은 꽤 잘 작동하는 것 같습니다. – greg0ire

관련 문제