2013-10-23 19 views
5

Używanie TastyPie Mam zasób modelu, który ma użytkownika FK. Kiedy złożyć pocztą do API muszę zawierać identyfikator użytkownika takiego:Zasób modelu z użytkownikami jako FK TastyPie API

data : JSON.stringify({ name : 'value a', user : '12' }), 

Moi użytkownicy muszą uwierzytelniać albo logując się lub stosując klucz API i nazwę użytkownika i hasło. W obu przypadkach już wiem, kim jest użytkownik.

1) W jaki sposób mogę dokonać użytkownik pewien, że user1 nie tworzy zasób dla użytkownik2?

2) lub w ogóle nie można wysłać identyfikatora użytkownika? Czy w jakiś sposób powinienem uzyskać dane od autoryzacji, jeśli tak, to w jaki sposób?

Odpowiedz

3

Aby odpowiedzieć na pytanie nr 1: Dokumentacja Tastypie opisuje how to create per-user resources. Zakładając, że użytkownik jest już częścią żądania:

class MyResource(ModelResource): 
    class Meta: 
     queryset = MyModel.objects.all() 
     resource_name = 'environment' 
     list_allowed_methods = ['get', 'post'] 
     authentication = ApiKeyAuthentication() 
     authorization = Authorization() 

    # Only allow creation of objects belonging to the user 
    def obj_create(self, bundle, **kwargs): 
     return super(EnvironmentResource, self).obj_create(bundle, user=bundle.request.user) 

    # Only allow accessing resources for this user 
    def apply_authorization_limits(self, request, object_list): 
     return object_list.filter(user=request.user) 

Aby odpowiedzieć na pytanie nr 2, prawdopodobnie użytkownik powinien być częścią sesji.

+0

Czy pierwszy arg super() w obj_create() nie powinien być "MyResource"? – DavidF