2012-07-01 3 views
5

그래서 웹 백엔드가 필요한 Android 용 앱을 만들고 있습니다. 이 웹 사이트는 Ruby on Rails에 구축 중입니다. 클라이언트 측 (예쁜 HTML 페이지)이 있지만 JSON을 통해 내 Android 앱에 정보를 제공 할 수 있기를 원합니다. 그러나 전 세계가이 JSON을 얻을 수 있기를 바라지 만 위험한 정보가 포함되어있을 수 있습니다. JSON 형식의 페이지를 잠그고 Android 앱에서 액세스 할 수있게하려면 어떻게해야합니까?내 앱용 Rails REST API를 만드는 방법은 무엇입니까?

현장 사용자 인증을 위해 Rails 3.1 has_secure_password을 사용하고 있으며 HTML 요청을 위해 열려 있지만 JSON 용으로 잠긴 경로가 필요합니다 (예 : /users URL에 액세스 가능해야 함). HTML로하지만 JSON으로는 일부 보안 메소드로 내 앱에서만 액세스 할 수 있어야합니다.

이렇게 할 수있는 방법이 있습니까? API가 별도의 앱이어야합니다 (DB 설치 등으로 인해 매우 불편할 것입니까?).

CLARIFICATION : 기본적으로 레일즈 앱에서 안전한 토큰 기반 JSON API를 만들고 싶습니다. Devise 또는 내가 이미 저장하고있는 방법을 변경하도록하는 항목을 사용하고 싶지 않습니다. 사용자/패스 정보.

답변

2

사용중인 레일 버전에 따라 작업의 일부가 이미 respond_to 메소드로 완료되어 동일한 URL에 대해 JSON과 HTML을 모두 제공 할 수 있습니다.

def with_access_check() 
    if allowed # Or any verification you want. 
    yield 
    else 
    # Raise a 403 maybe? 
    end 
end 

# Then in every method that needs a check: 
respond_to :json { with_access_check { render :json => @stuff } } 

마지막으로 JSON 응답을 제공 할 때마다 당신은 JSON 및 HTML에 매우 다양한 데이터를 제공하지 않는 한 이제 JSON 액세스를 잠글 수, 당신은 응용 프로그램 액세스를 확인하는 방법을 정의하고 호출 할 수 (두 URL 모두 동일한 URL을 사용하는 경우 이상하게 보임) 공격자/악의적 인 사용자가 HTML에서 바로 동일한 데이터를 추출하는 것을 막을 수는 없다고 생각합니다.

관련 문제