Лучшие практики управления Django auth с использованием сессий и методов на основе токенов в одном проекте
Я пытаюсь добавить поддержку API через django-rest-framework для всех представлений в моем проекте. Предположим, что все представления возвращают JSON-ответ и основаны на функциях.
Как я могу лучше всего справиться с этой ситуацией, не переписывая много кода?
Вот что у меня есть на данный момент:
views.py
@login_required
@require_POST
def get_data(request):
#.... core logic ....
return JsonResponse({'msg': '<...>'},status=200)
@api_view(['POST'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def api_get_data(request):
return get_data(request)
urls.py
url(r'^get_data/$', views.get_data, name='get_data'),
url(r'^api/v1/get_data/$', views.api_get_data, name='api_get_data'),
Я использую CSRFmiddleware, поэтому я получаю защиту CSRF для всех представлений.
Существует ли лучший подход, чем вышеуказанный, для достижения/обеспечения:
- Вызовы REST API работают без CORS/CSRF-токена >
- Вызовы на основе браузера работают только с CORS/CSTF-токеном
Буду признателен за любую помощь или предложения о том, как разработать/организовать проект для данного случая использования.