2011-02-27 5 views
2

파일 업로드 기능으로 레일즈 애플리케이션을 만들고 인증 된 사용자 만 파일을 업로드 할 수 있습니다. 파일 업로드 양식은 회원 전용 영역에 있지만 업로드 URL을 잡고 스크립트에서 데이터를 게시하기가 쉽기 때문에 인증되지 않은 파일 업로드 제출에 대해 우려하고 있습니다. 물론 업로드는 거부되지만 데이터 전송이 완료되고 귀중한 대역폭이 낭비 된 후에야 거부됩니다. 전체 양식을 내 서버에 제출하기 전에 인증되지 않은 파일 업로드를 거부하려면 어떻게합니까? 스크립트 나 CURL을 사용하여 사용자를 제어 할 수 없기 때문에 일종의 서버 측 솔루션이 필요합니다. 나는 어떤 의견을 주셔서 감사합니다. 감사.데이터 전송이 완료되기 전에 파일 업로드를 거부하는 방법은 무엇입니까?

+0

어쩌면 로그인을 보장하기 위해 before_filter이? – Shreyas

답변

0

이 작업이 실행되기 전에 (upload_form_action가 업로드 양식 페이지 인 및 upload_action 파일을해야

allowed_to_upload을 접수에 페이지되고 있습니다 .. before_filter 실행 무엇을 할 수 있는지에 대한 간단한 의사 코드는 파일을 업로드하는 데 필요한 true/false를 반환 등 도우미/기능/그것이 거짓이라면, 그것은, (403)는 무단 렌더링 그렇지 않으면 단지에 날림됩니다 수.

before_filter :check_upload, :only => [:upload_form_action, :upload_action] 

protected 
    def check_upload 
    render :nothing, :status => 403 and return unless allowed_to_upload 
    end 
+0

I을 현재 사용자가 로그인했는지 여부를 확인하는 비슷한 before_filter 설정을 가지고 있습니다. 사용자가 로그인하지 않으면 사용자를 리디렉션합니다. 귀하의 코드를 시도했지만 파일이 완전히 업로드 된 후 인증이 항상 수행됩니다. html 소스 (진위성 토큰 및 모두 포함)에서 양식을 잡아 내고 인증 정보가 들어있는 쿠키없이 파일 업로드를 시도하는 정통한 사용자를 상상해보십시오. before_filter 인증은 사용자가 로그인했지만 실제 업로드가 아니기 때문에 파일의 추가 처리를 거부합니다. – SimKo

+0

이 문제는 업로드가 완료 될 때까지 요청이 Rails에서 처리되지 않는다는 것입니다. 그러나, 나는 어떤 페이지에 1GB 업로드 요청을 보낼 수 있으며, 그것에 대해 많은 것을 할 수 없다고 생각합니다. 이걸 보셔야합니다. – nvez

+0

그래, 나는 이것이 사실일지도 모른다는 사실을 암시했다. 정말 필요한 것은 파일 업로드가 끝나기 전에 쿠키를 확인한 다음 업로드를 종료하는 것입니다. 완전히 완료되기 전에 게시물을 처리 할 수 ​​있는지 궁금합니다. 쿠키는 양식 데이터보다 먼저 전송되므로 양식 데이터가 서버로 스트리밍되는 동안 인증 데이터가있는 쿠키가 있는지 여부를 확인하기 위해 게시물을 검사 할 수있는 기회가있을 수 있습니다. 아마도 일부 랙 사용자 정의가 있습니까? 나는 웹 서버가 그것을 전달하기 전에 전체 게시물을 버퍼링하는지 궁금하다. – SimKo

관련 문제