#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'