2012-08-06 11 views
7

Ho la seguente risorsa:TastyPie - Override_urls ignora Autenticazione e autorizzazione

class MyUserResource(resources.MongoEngineResource): 

    class Meta: 
     ... 
     authentication = MyKeyAuthentication() 
     authorization = ApiKeyAuthorization() 

    def override_urls(self): 
     return [...] 

Tutte le chiamate API che sono standard-tastypie vengono instradati attraverso l'autenticazione e l'autorizzazione. Ma tutte le funzioni/URL personalizzati (che sono nel mio override_urls) semplicemente ignorano le funzioni di auth/auth ...

Qualche idea perché?

Edit:

Forse il problema è che il dispatcher non è chiamato. La domanda rimane perché è ... e come posso cambiare questo comportamento!

risposta

15

Ok, alla fine ho scoperto che durante la personalizzazione/sovrascrittura dei miei URL, sovrascrivo anche il comportamento standard della chiamata wrap_view. Ciò causa la non chiamata di dispatch che si occupa di controllare i metodi-auth.

Così ho appena messo il auth -Controlli manualmente Evey delle mie funzioni (come questo):

self.is_authenticated(request) 
self.is_authorized(request) 

Spero che questo aiuti altri disperati tastypie-sviluppatori :)

+1

sono imbattuto in questo! Molte grazie! – abisson

+7

La funzione '' is_authorized'' non esiste più, le persone interessate a questa domanda dovrebbero verificare come funziona la funzione di invio qui: https://github.com/toastdriven/django-tastypie/blob/master/tastypie/resources.py# L470 e adattare il processo alle loro esigenze. – Mibou

Problemi correlati