У меня возникла странная проблема: мое кэширование представления на основе функций конфликтует с примененными к нему классами разрешений. Декораторы для представления следующие:
Код: Выделить всё
@cache_page(3600)
@api_view(['GET'])
@permission_classes((APIKeyPermission,))
def function_based_view(request):
# function-based view code here...
Проблема в следующем: когда я пытаюсь получить доступ к представлению через HTTP GET, если оно еще не кэшировано, для этого потребуется выполнить APIKeyPermission и выдать ошибку 401. . Это правильное поведение. После успешного кэширования представления любой HTTP-запрос GET может успешно получить доступ к представлению без предоставления каких-либо необходимых разрешений. Важно отметить, что после кэширования представления декоратор @permission_classes, кажется, ничего
и представление даже не возвращается к DEFAULT_PERMISSION_CLASSES< /code>, как указано в файле settings.py (который в данном случае даже более строгий, чем один класс разрешений, указанный в декораторе метода @permission_classes).
Коротко: как только представление кэшируется, к нему можно получить доступ без применения к нему каких-либо классов разрешений.
Как это исправить, чтобы классы разрешений правильно применяются к кэшированным представлениям?
Подробнее здесь:
https://stackoverflow.com/questions/784 ... asses-to-b