2

google-app-engine db.Model (및/또는 ndb.Model)에서 레코드 수준 사용 권한 및 속성 수준 가시성을 얻으려면 권장되는 방법이나 프레임 워크가 있습니까?google-app-engine db.Model/ndb.Model에 대한 레코드 수준 권한을 얻으려면 권장되는 방법이나 프레임 워크가 있습니까?

나는 모델 후크에 대해 읽었습니다,하지만 난이 작업을 수행하는 기존의 권장 모범 사례가 있는지 싶어요.

class Person(db.Model): 

first_name = db.StringProperty() 
last_name = db.StringProperty() 
city = db.StringProperty() 

# Record level permissions: 
# "top" visible only to managers 
# "medium" visible to managers & supervisors 
# "none" visible to all (unless other permissions restrict) 
secrecy = db.StringProperty(required=True, choices=set(["top", "medium", "none"])) 

birth_year = db.IntegerProperty() # Accessible only with "Manager" permission 
height = db.IntegerProperty() # Writable only with "Supervisor" permission 

이에 좀 더 컨텍스트 - 나는 사용자가 간단한 자바 스크립트 RPC 호출을 통해 인해 임의 GQL 쿼리와 DMLs을 실행할 수 있도록하려면 이후 모델 수준으로 이러한 권한 검사가 필요합니다.

답변

1

엔티티 레벨 (= 레코드 수준) 권한을 위해 당신은 Namespaces API에 보일 것입니다. Afaik, 속성 수준의 사용 권한에 대한 즉시 사용 가능한 솔루션은 없습니다. 직접 코딩해야합니다.

참고 네임 스페이스는 엔티티 키에 네임 스페이스를 추가하여 작동합니다. 즉, 네임 스페이스 간 쿼리를 수행 할 수 없으며 네임 스페이스 (종류, 상위 및 ID/이름과 함께)를 알아야하는 엔티티를 가져올 수 없습니다.

네임 스페이스는 예를 들어 복수 점유를 달성하는 효과적인 방법이다 고객을 완전히 분리시키는 방법은 동일한 GAE 앱을 사용하여 코드 오류로 인해 고객의 데이터가 다른 고객에게 노출 될 수있는 가능성을 방지합니다. 당신이 지적

+0

감사하지만,로 - 네임 스페이스는 최고의 다중 테넌트에 사용하고 난 같은 위해 그것을 사용하려는. – anups