DRF令牌身份验证:{“详细信息”:“未提供身份验证凭据。” }

时间:2019-07-29 10:53:21

标签: 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端点上提供用户名和密码来获取令牌。 enter image description here

现在,只要以这种格式添加Authorization HTTP标头,我就应该能够访问任何API。 授权:令牌“ xyz”

但是我不断得到{"detail":"Authentication credentials were not provided"} enter image description here

这是我要访问的视图。


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

为什么我会不断收到此错误?我在做什么错了?

2 个答案:

答案 0 :(得分:1)

:标头值中删除Authorization Authorization标头的值应如下所示:

Token <token value>

答案 1 :(得分:1)

您需要像Authorization: Token 1740...20一样将令牌作为标头传递。 Token之后没有分号。 这是一个curl命令

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