Tastypie: определение аутентификации для всех ресурсов

Каков наилучший подход к определению аутентификации / авторизации для всех ресурсов tastypie? У меня много ресурсов, и я не хочу копировать строку аутентификации каждый раз. Прямо сейчас я определил функцию

def create_auth():
    return MultiAuthentication(ApiKeyAuthentication(), BasicAuthentication())

и вызываю его в каждом ресурсе ‘ meta class:

class SomeResource(ModelResource):
    class Meta:
        authentication = create_auth()

Есть ли лучшее решение для этого? Возможно ли/лучше ли решение «metametaclass»? Например.

class AuthMeta:
    authentication = MultiAuthentication(ApiKeyAuthentication(), BasicAuthentication())

class SomeResource(ModelResource):
    class Meta(AuthMeta):
        # further settings

class SomeOtherResourceNonORM(Resource):
    class Meta(AuthMeta):
        # further settings

1 ответ

  1. Вы должны сделатьmetametaclass, как рекомендуется для tastypie и django .

    classs YourBaseResource(ModelResource):
        class Meta:
            authentication = MultiAuthentication(ApiKeyAuthentication(), BasicAuthentication())
    
    class SomeResource(YourBaseResource):
        class Meta(YourBaseResource.Meta):
            # further settings
    
    class SomeOtherResourceNonORM(YourBaseResource):
        class Meta(YourBaseResource.Meta):
            # further settings
    

    update: использование правильного базового ресурса