2013-07-18 2 views
4

Tastypie 권한 부여를 사용하여 사용자에게 개체에만 액세스 권한을 부여하려고합니다. 그러나 제대로 이해하고 있는지 이해하는데 어려움이 있습니다. 여기 예제를 따라 : 그 주석 경우Django Tastypie 사용자 개체 전용 권한

def create_detail(self, object_list, bundle): 
    return bundle.obj.user == bundle.request.user 

모든 작품 평가하는 문제가 있기 때문에

http://django-tastypie.readthedocs.org/en/latest/authorization.html#implementing-your-own-authorization

나는 새 개체를 만들려고

, 나는 404 오류가 발생합니다. 이 두 줄을 주석으로 처리하면 다른 사용자의 개체를 만들 수 있지만, 시도 할 때 401 (UNAUTHORIZED) 응답이 올바르게 표시됩니다.

두 줄이 필요 없다는 의미입니까? Tastypie는 개체를 만들 수있는 권한이 있는지 정확하게 판단 할 수 있습니까?

내가 이것을 실행하면 'user'가 적절한 URI ('/ api/v1/user/1 /')와 같은 POST 요청을 보냈습니다. Tastypie가 문제를 판단하고 있는지 확실하지 않습니다. 그런 식으로 할 때 나는 확실하지 않습니다.

bundle.obj.user 

두 줄을 주석으로 남겨 두어도 안전합니까? Tastypie는 다른 방법 중 하나를 사용하여 사용자에게 권한을 부여합니까?

+0

'bundle.obj.user == bundle.request.user'는 사용자가 소유하고있는 행을 변경하는 경우 (행 레벨 권한 부여) true를 리턴합니다. 그게 당신이하려는 일입니까? –

+0

예. PUT 요청을 할 때 제대로 작동합니다. 그러나 POST 요청 중에는 작동하지 않습니다. POST는 두 줄을 제거하면 작동합니다. – bwang88

+0

버그와 비슷합니다. Tastypie의 Github 페이지에서 문제로보고 할 것입니다. –

답변

0

시도는 : bundle.obj가 create_detail 인증 동안 채워지지 않습니다처럼

def create_detail(self, object_list, bundle): 
    return bundle.obj == bundle.request.user 
0

것 같습니다.

또한 사용자를위한 create_detail은 그다지 의미가 없습니다. 사용자가 생성 할 때까지 소유 할 객체가 없기 때문입니다. bundle.request.user가 모델에 대한 권한을 가진 유효한 사용자인지 여부 만 확인할 수 있습니다.

def create_detail(self, object_list, bundle): 
    resource=BookResource() 
    book=resource.get_via_uri(bundle.data["book"], bundle.request) 
    return book.user == bundle.request.user 

어쨌든, 결론 : 생성 된 객체는 사용자가 소유 한 객체를 참조하는 경우 내 경우

, 내가 확인하는 데 필요한, 그래서 여기에 내가 생각 해낸거야 tastypie의 문서는 조금 떨어져 있습니다 .

그리고 도움이 되길 바랍니다.