Как я могу передать CSRF-токен с моими API-запросами, если у меня нет логина пользователя для моего Django-сайта?

Используя фреймворк Django rest, я создал конечную точку API, которую я вызываю в своих статических файлах и в которую я хотел бы передать токен CSRF, чтобы только я мог получить доступ к API.

На моем сайте Django нет пользователей с логинами.

По сути, я хочу сделать что-то вроде этого в моей конечной точке API:

@api_view(['POST'])
def payment(request, *args, **kwargs):
    if (("Authorization" not in requests.headers) or (request.headers["Authorization"] != "token")):
        return Response({"Error": "Not authorized for access."})
    ...

Нужно ли мне сгенерировать токен один раз и использовать его многократно? Или я могу генерировать его каждый раз, когда используется скрипт? И как я могу получить доступ к этому токену csrf в моем HTML файле? Я использую представления на основе классов и предполагаю, что передам его в get_context_data, но как мне настроить конечную точку API на прием этого CSRF-токена?

Я бы посоветовал использовать TokenAuthentication прямо из django-restframework: https://www.django-rest-framework.org/api-guide/authentication/

Затем вы передадите токен в заголовке всех ваших запросов например Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

Если вы используете декораторы из django-restframework, вы можете пропустить все пользовательские проверки токенов, так как это делается django-restframework.

@api_view(['POST'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def payment(request, *args, **kwargs):
    # ...
Вернуться на верх