2012-08-06 11 views
7

Tengo el siguiente recurso:TastyPie - Override_urls hace caso omiso de autenticación y autorización

class MyUserResource(resources.MongoEngineResource): 

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

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

Todas las llamadas a la API que son estándar-tastypie se enrutan a través de la autentificación y autorización. Pero todas las funciones/urls personalizadas (que están en mis override_urls) simplemente ignoran las funciones auth/auth ...

¿Alguna idea de por qué?

Editar:

Tal vez el problema es que el despachador no se llama. La pregunta sigue siendo por qué eso es ... y cómo puedo cambiar este comportamiento.

Respuesta

15

Ok, finalmente descubrí que al personalizar/anular mis URL también anulo el comportamiento estándar de llamar al wrap_view. Esto provoca la no llamada de dispatch que se encarga de verificar los auth -metodos.

Así que sólo hay que poner los auth se utiliza para comprobar manualmente en evey de mis funciones (como este):

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

Esperanza esto ayuda a otros tastypie-desarrolladores desesperados :)

+1

encontramos con este! ¡Muchas gracias! – abisson

+7

'' is_authorized'' la función ya no existe, las personas interesadas en esta pregunta deberían verificar cómo funciona la función de envío aquí: https://github.com/toastdriven/django-tastypie/blob/master/tastypie/resources.py# L470 y adaptar el proceso a sus necesidades. – Mibou

Cuestiones relacionadas