You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Rest Framework Token Authentication不生效该如何解决?

Django REST Framework Token Authentication 不生效解决方案

你当前的问题核心是仅配置了身份认证规则,没有配置接口访问权限限制。DRF 的 authentication_classes 仅负责解析请求携带的 Token 校验用户身份,不会主动拦截未携带有效 Token 的请求,需要配合权限类实现未认证拦截。

方案1:全局配置权限类(所有接口默认需要认证)

修改 settings.py 里的 REST_FRAMEWORK 配置,新增全局权限规则:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication'
    ],
    # 新增全局权限配置
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated'
    ]
}

该配置下所有接口默认都需要登录认证,不需要认证的接口可以单独在视图上加 @permission_classes 装饰器指定宽松权限。

方案2:单独给指定视图配置权限类(仅当前接口需要认证)

如果不需要全局限制,仅需要给当前 users_view 接口加权限校验,修改 views.py 的视图装饰器即可:

from rest_framework.permissions import IsAuthenticated

@authentication_classes((TokenAuthentication,))
@permission_classes((IsAuthenticated,))  # 新增权限校验装饰器
@api_view(['PUT', 'POST'])
def users_view(request):
# 原有业务逻辑

生效验证说明

配置完成后符合以下规则:

  • 未携带 Token、Token 无效的请求会直接返回 401 Unauthorized 状态码
  • 携带有效 Token 的请求会正常进入业务逻辑,request.user 会自动赋值为 Token 对应的用户对象
  • 请求头格式需要符合规范:Header 中添加 Authorization: Token 你的有效token值,注意前缀和空格不要写错。

内容的提问来源于stack exchange,提问作者bballboy8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:24:03