Автоматический выход из системы Tastypie

Я создаю API на основе Django 1.4.3 с Tastypie. Я использую ApiKey для аутентификации пользователей. По умолчанию ApiKey не может быть просрочен. Но есть столбец created с датой и временем в таблице apikey. Даже когда я изменяю его на 2010 год, ключ все еще действителен.

Мой вопрос: как я могу сделать столбец created полезным и запретить доступ к ключам старше, скажем, 24 часов, самым простым способом и имеет ли это смысл?

На данный момент я понятия не имею, как я мог бы даже попытаться достичь этого.

Я не жду готового решения. Несколько полезных советов.


person Bartosz Dabrowski    schedule 13.06.2013    source источник


Ответы (1)


Я нашел решение, переопределив метод get_key в ApiKeyAuthentication.

class MyApiKeyAuthentication(ApiKeyAuthentication):
    def get_key(self, user, api_key):
        """
        Attempts to find the API key for the user. Uses ``ApiKey`` by default
        but can be overridden.
        """
        from tastypie.models import ApiKey

        try:
            api_key = ApiKey.objects.get(user=user, key=api_key)
            current_time = datetime.utcnow()
            current_time = current_time.replace(tzinfo=pytz.utc)

            week = timedelta(7)

            if not (current_time - api_key.created) < week:
                api_key.delete()
                return self._unauthorized()
            else:
                api_key.created = current_time
                api_key.save()

        except ApiKey.DoesNotExist:
            return self._unauthorized()

        return True
person Bartosz Dabrowski    schedule 13.06.2013