Аутентификация токена DRF: { «подробности»: «Учетные данные для аутентификации не были предоставлены».}

#django #django-rest-framework #token #postman

Вопрос:

Я работаю над проектом электронной коммерции Django.

Я попытался внедрить систему аутентификации по токенам. Я добавил rest_framework.authtoken к INSTALLED_APPS и

 REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (

        'rest_framework.authentication.TokenAuthentication',
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',
    )
}
 

в файл настроек.

Вот мой urls.py

     path('admin/', admin.site.urls),
    path('login_signup/',include('login_signup.urls')),
    path('profile',include('profile_info.urls')),
    path('',include('category.urls')),
    path('cart',include('cart.urls')),
    path('api_token_auth',views.obtain_auth_token,name='auth-token'),
]
 

Вот мое category.urls досье.

 
urlpatterns=[
path('category',CategoryView.as_view(),name='category'),
path('subcategory',SubcategoryView.as_view(),name='subcategory'),
path('product',ProductView.as_view(),name='product'),
path('search',SearchView.as_view(),name='search'),
]

 

Я могу получить токены, указав имя пользователя и пароль в api_token_auth конечной точке.
введите описание изображения здесь

Теперь я должен иметь доступ к любому API при условии, что я добавлю HTTP-заголовок авторизации в этом формате. Авторизация:Токен «xyz»

Но я продолжаю получать {"detail":"Authentication credentials were not provided"}
введите описание изображения здесь

Вот представление, к которому я пытаюсь получить доступ.

 
class SubcategoryView(APIView):
       def get(self,request):
           serializer=SubcategorySerializer(Subcategory.objects.all(),many=True)
           return JsonResponse({"subcategories":serializer.data})
 

Почему я продолжаю получать эту ошибку? Что я делаю не так?

Комментарии:

1. опубликуйте свой файл URL-адресов категорий

2. @Exprator пожалуйста, посмотрите отредактированный пост

Ответ №1:

Удалите значение : из Authorization заголовка. Значение Authorization заголовка должно выглядеть следующим образом:

Token <token value>

Ответ №2:

Вам нужно передать токен как заголовок Authorization: Token 1740...20 . После точки с запятой нет Token . Вот команда curl

 curl -X GET http://127.0.0.1:8000/subcategory/ -H 'Authorization: Token 1740...20'