【问题标题】:DRF: Unable to make authenticated calls with token in headerDRF:无法使用标头中的令牌进行经过身份验证的调用
【发布时间】:2019-11-03 04:58:03
【问题描述】:

我有一个经过身份验证的列表视图,但每当我尝试使用标头中的令牌发出请求时,都会收到 400 错误。有什么想法吗?

列表视图

class EventListView(ListAPIView):
    authentication_classes = (TokenAuthentication, )
    permission_classes = (IsAuthenticated, )
    serializer_class = EventFilterSerializer
    ...

获取身份验证令牌端点:

from rest_framework.authtoken.views import obtain_auth_token

urlpatterns = [
    path('auth/', obtain_auth_token, name='api_token_auth'),
]

设置:


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

邮递员截图

【问题讨论】:

  • 那个令牌是从哪里来的? IsAuthenticated 权限检查用户是否已登录,这通常通过会话 cookie 完成
  • @IainShelvington 我更新了帖子以包含 get_auth 端点
  • 您在视图中将authentication_classes 设置为一个空元组,可能是这个问题吗?您需要添加TokenAuthentication 或删除该行(如果它在DEFAULT_AUTHENTICATION_CLASSES 中)
  • 我确实在设置中配置了DEFAULT_AUTHENTICATION_CLASSES。我还在视图中包含了课程,但我仍然得到 400。我再次更新了帖子。
  • 我的立场已得到纠正,这解决了我的问题,我必须重新启动服务器才能看到更改。

标签: django django-rest-framework django-rest-auth


【解决方案1】:

正如@Iain Shelvington 所说,即使我在设置中配置了 DEFAULT_AUTHENTICATION_CLASSES 权限,但我在视图中覆盖了它。通过完全删除空的 authentication_classes 元组或添加 TokenAuthTokenAuthenticationen,我的问题得到了解决。

【讨论】:

    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多