为什么 Django Rest Framework 令牌身份验证不起作用?

Why isn't Django Rest Framework Token Authentication working?

我目前正在使用 Django rest 框架并尝试实现令牌身份验证系统。目前,我的 settings.py 看起来像这样:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication'
    ]
}

和 rest_framework.authtoken 在 installed_apps.

我的 urls.py 看起来像这样:

urlpatterns = [
    ...
    url('^v1/users/$', views.users_view),
    ...
]

我的 views.py 看起来像这样:

@authentication_classes((TokenAuthentication,))
@api_view(['PUT', 'POST'])
def users_view(request):
...

我在邮递员工作以测试 API,无论我是否将令牌放在授权字段中,API 都会按预期工作。我需要更改什么才能使令牌身份验证按预期工作?

更新: Reqbin 也为我提供了相同的功能,所以我认为这不是邮递员的问题。

您还需要添加权限 class。

@authentication_classes((TokenAuthentication,))
@permission_classes((IsAuthenticated,))
@api_view(['PUT', 'POST'])
def users_view(request):
...

Django 中似乎存在一个错误,它不允许某些身份验证与基于函数的视图一起使用。我可以确认它不适用于 TokenAuthentication 并且需要使用基于 class 的视图。