Django Rest Framework С аутентификацией пользователя JWT (получение анонимного пользователя) - PullRequest
0 голосов
/ 15 января 2020

Я использую JWT с Django для аутентификации запросов от Ajax jquery. Мой Jquery -

$.ajax({
        url: "/customerapi/get-customer-detail/",
        type: 'GET',
        // headers: {"Token": localStorage.getItem('token')},
        beforeSend: function (xhr) {
        /* Authorization header */
        xhr.setRequestHeader("Authorization", "Token " + localStorage.getItem('token'));
        xhr.setRequestHeader("X-Mobile", "false");
         },

        success: function (res) {

        }
    });

И когда я получаю этот запрос на сервере, я аутентифицируюсь вот так

from rest_framework.permissions import IsAuthenticated

class GetCustomerData(APIView):
    authentication_classes = (JSONWebTokenAuthentication,  )
    permission_classes = (IsAuthenticated ,)
    def get(self, request):
        try:
        Customer.objects.get(id=request.user)

, здесь мой Request.user всегда анонимный. Почему это происходит?

и мои промежуточные классы

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

]

1 Ответ

2 голосов
/ 15 января 2020

Должно быть JWT вместо Token внутри значения заголовка:

xhr.setRequestHeader("Authorization", "JWT " + localStorage.getItem('token'));
...