2012-10-05 3 views
0

사용자가 음악 트랙 및 관련 클립을 업로드 할 수있는 응용 프로그램 (Rails 3.2.8)을 빌드하고 있습니다. 클립은 공개적으로 액세스 할 수 있지만 구매하지 않고도 트랙에 액세스 할 수는 없습니다. 두 파일 형식을 모두 업로드하는 데 carrierwave를 사용하고 있습니다. 그러나 실제 트랙 경로를 사용자에게 알려주고 싶지 않습니다.실제 경로를 숨기는 방법 Carrierwave

핫 링크 및/또는 파일에 대한 무단 액세스를 보호하기 위해 이러한 서비스가 사용하는 기술은 무엇입니까?

def store_dir 
    "tracks/#{model.user_id}/" 
    end 

그러나,이 매우 취약하다 : 같은

현재 carrierwave 경로입니다. 누구나 쉽게 URL을 추측 할 수 있습니다. 1. 정적 다운로드 링크 (이 링크는 해당 사용자에게 항상 유효하지만 게스트 또는 다른 사용자는 URL을 사용할 수 없음) 2. 각 다운로드에 대한 일반 임시 링크 !

구매하지 않고 파일을 다운로드 할 수 있도록 내가 고려할 수있는 방법을 알려주십시오. (나는 그들을 공부할 것입니다.)

답변

0

s3을 사용하면 개인 파일을 저장할 수 있으며, 특정 기간 및 액세스 토큰에서만 사용할 수 있습니다.

는 carrierwave으로, 당신은 단순히 여기에 설명이 트랙의 클립과 개인 모두 공개를 원하는처럼 https://github.com/jnicklas/carrierwave#using-amazon-s3

+0

감사합니다. 하지만 아마존 없이는 할 수 없습니까? – HungryCoder

1

이 보인다 false로 fog_publig을 설정해야합니다. 아래의 방법 (테스트되지 않음)을 사용하여 이것을 구현하려고합니다.

def fog_public 
    return @job.job_kind == 'public' 
end 
+0

입력 해 주셔서 감사합니다. 'fog_public'은 무엇입니까? 설명해 주시겠습니까? – HungryCoder

관련 문제