2013-03-04 3 views
0

백본과 마리오네트를 사용하고 있습니다.백본 : 인증 된 사용자 데이터를 얻는 방법

내가 정의 된 사용자 모델이 있습니다

Users.User = Backbone.Model.extend({ 
    defaults: { 
     short_name: '', 
     full_name: '' 
    } 
}); 

내가 쉽게 현재 내 백본 코드에서 사용자 데이터에 기록하여 액세스 할을.

  1. 은 사용자 모델 (아마 Users.AuthUser ??)

또는

  1. 추가에서 상속 별도의 모델이 있습니다

    난에 있는지 확실하지 않다 User.User 모델 내 별도의 함수 대신 User 모델의 인스턴스를 반환하지만 로그인 한 사용자 데이터를 포함합니다.

현재 로그인 한 사용자 데이터를 검색하는 방법을 잘 모르겠습니다.

http://example.com/me과 같은 끝점 URL을 통해 데이터를 JSON으로 표시합니까?

아니면 백본에서 세션 데이터에 액세스 할 수 있습니까?

답변

1

subclass에 부모와 관련이없는 속성/메소드가있는 경우 서브 클래스로 분류해야한다는 것은 일반적인 경험 법칙입니다. 제 견해로, 이것은 이것의 한 예입니다.

백본 (단순히 MVC JS 구현)은 세션 데이터에 액세스 할 수 없습니다. 따라서 REST 요청을 통해이를 사용할 수 있어야합니다.

+0

자신의 백본 응용 프로그램에서 같은 것을 구현합니까? –

+0

개인적으로 위에서 설명한대로이 시나리오에서 내가 어떻게 할 것입니다. Subclassing은'defaults'와'validate()'같은 것을 무시할 수있게 해줍니다. 그리고 네,'/ me'는 완벽하게 유효한 자원이라고 생각합니다. 귀하 (또는 다른 누군가)가 다음주에 모바일/데스크톱 응용 프로그램을 개발한다면 귀하의 서비스 구현을 수용하기 위해 변경하지 않아야합니다. – juco

0

데이터는 모델간에 공유되지 않습니다. 인증 된 사용자에 대해 사용자 모델 내에서 특정 기능이 필요하지 않다면 인증 된 사용을 더 많은 데이터로 채우는 것으로 충분합니다.

이 방법은 fetch() 메서드에 있으며, 현재 모델에 로그인 한 사용자의 JSON을 반환하는 끝점과 내 모델이 통신하는지 확인해야합니다.

인증 된 사용자와 다른 사용자를 구분하기 위해 urlRoot을 정의하려면 두 개의 별도 모델이 필요합니다.

P.S. 실제로 PEST 대신 REST API 대신 동기화 프로토콜로 socket.io를 사용하므로 현재 사용자 대 연락처에 대해 서로 다른 이벤트 이름을 사용하여 동기화합니다.

+0

그래서 인증 된 사용자에 대해 다른 엔드 포인트 URL을 사용합니까? like/me는 로그인 한 사용자이고/user/: 다른 사용자는 누구입니까? –

+0

수정. 효과적으로 API 관점에서 다른 모델로 취급하지만 백본 앱 내에서 일관된 표현을 사용합니다. –

+0

그런 경우 AuthUser를 가져올 때 다른 URL을 어떻게 설정합니까? 일반적인 fetch()와는 다른 fetchAuth() 함수를 사용합니까? –

관련 문제