2009-08-13 3 views
0

내 코코아 애플리케이션에서 Ruby on Rails 앱에서 모델의 인스턴스를 생성하기 위해 HTTP POST를 수행하려고합니다. 나는 클라이언트 (코코아)와 서버 (레일즈) 모두를 쓰고 있으므로 어느 위치에서나 변경할 수 있습니다. 이 경로를 레일로 I 텍스트/XML에 HTTP POST에 대한 콘텐츠 형식을 설정할 수 있습니다 때 나는 위조데스크탑 클라이언트에서 HTTP Post Multipart/Form-Data를 레일즈에 복사

모두에서 보호 사용할 때 필요한 인증 토큰의 문제로 실행하고

괜찮습니다 인증 토큰을 필요로하지 않는 적절한 xml 핸들러. 모델 객체가 생성되고 연결되며 제대로 저장됩니다. 단.

이제 파일을 서버에 업로드하려고합니다. 이것은 나에게 multipart/form-data Content-type을 사용할 것을 요구한다. 인증 토큰이 확인하지 않기 때문에이 연결이 실패합니다. xml POST를 보내지 않기 때문에 인증해야합니다. 그러나 나는 탁상용 클라이언트를 사용하고있어 탁월한 폼 헬퍼를 사용할 수 없습니다.

이 문제를 해결하는 적절한 방법은 무엇입니까?

위조 방지 기능을 해제하면 파일 업로드 HTTP POST가 제대로 작동하지만 이상적인 해결책은 아닙니다.

덕분에,이 약 제프

답변

0

한 가지 방법이 특정 업로드 컨트롤러에서 별도의 조치를 생성하는 것입니다. 그런 다음 해당 컨트롤러에서 다음을 선언 할 수 있습니다.

skip_before_filter :verify_authenticity_token, :only => :my_special_action 

물론이 업로드 작업은 원격 게시물 제출에 노출됩니다. 하지만 너는 그렇게하려고 노력하고있어? 원격 제출 무언가. 따라서 원격 전송으로부터 보호하고 동시에 사용할 수는 없습니다. 그 주위를 볼 수있는 몇 가지 방법이 있습니다.

  • API 토큰 업로드 API가 데스크톱 앱에만 을 사용하려는 경우 은 코드로 레일 측에서 유효성을 검사 한 데스크톱 앱으로 토큰을 배포해야합니다.
  • 자신의 앱을 API에 게시하려면 토큰을 요청하게하여 나중에 스팸 발송자를 필터링 할 수있게하십시오.
  • 오픈 토큰이없는 무료 액세스 인 경우 이 통과 할 수 있도록 확인해야합니다.

P. 사이트에 계정이있는 경우이 작업에 기본 인증을 요구할 수 있습니다.

0

그냥 약간의 솔루션, 당신의 경우에 작동 할 수 있습니다 :

skip_before_filter :verify_authenticity_token, :only => :get_auth_token 

토큰

다음 XML 호출을 통해 앱에 다시 보낼 생성

후 미래의 참조에 대한 그 토큰을 사용 .

+0

이것은 본질적으로 내가 한 일입니다. 단, 실제로 업로드 할 때마다 인증 토큰을 가져와 확인해야합니다. –