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

Django DRF+SimpleJWT权限异常:Postman拦截有效但Angular未拦截

排查与解决步骤

1. 先确认Angular请求的真实状态

打开浏览器F12开发者工具,切换到网络标签,发起请求后:

  • 检查请求头里有没有Authorization: Bearer <token>字段,如果有,说明前端可能缓存了之前的有效token(比如localStorage没清);
  • 查看响应状态码和内容,确认后端是否真的返回了未授权数据,还是前端做了本地缓存。

2. 检查视图集是否覆盖了全局权限

你的settings.py已经配置了全局默认权限IsAuthenticated,但要确认:

  • 所有视图集(比如CampingViewSet、ClientViewSet)有没有局部设置permission_classes = [AllowAny]或者其他宽松权限,覆盖了全局规则;
  • 检查所有视图代码,确保没有绕过权限的配置。

3. 排查认证后端的冲突

你的AUTHENTICATION_BACKENDS里同时配置了TokenAuthentication和JWT认证,这可能导致:

  • 如果前端请求里带有DRF的Token认证头(不是JWT),会被TokenAuthentication处理,若恰好有有效Token就会绕过JWT认证;
  • 先注释掉rest_framework.authentication.TokenAuthentication,测试是否还能未授权访问:
    AUTHENTICATION_BACKENDS = [
        # 'rest_framework.authentication.TokenAuthentication', # 临时注释
        'django.contrib.auth.backends.ModelBackend',
        'axes.backends.AxesStandaloneBackend',
    ]
    

4. 完善CORS头配置

虽然你自定义了静态文件的CORS处理,但API请求的CORS头由corsheaders中间件处理:

  • 确认没有设置CORS_ALLOW_ALL_ORIGINS = True(这个会放开所有来源,可能导致权限绕过的错觉);
  • 确保CORS_ALLOW_HEADERS包含Authorization头,若自定义了该配置,手动加上:
    CORS_ALLOW_HEADERS = [
        'accept',
        'accept-encoding',
        'authorization',
        'content-type',
        'dnt',
        'origin',
        'user-agent',
        'x-csrftoken',
        'x-requested-with',
    ]
    

5. 直接用浏览器测试API

在浏览器地址栏输入API的URL(比如http://127.0.0.1:8000/client/):

  • 如果浏览器也能直接访问,说明问题在后端权限配置,和前端无关;
  • 如果浏览器返回认证错误,那问题出在Angular请求的处理上,比如前端自动带上了认证信息(比如session cookie,但JWT默认不依赖session,可能是其他配置问题)。

6. 开启DRF调试日志排查认证过程

在settings.py添加日志配置,查看认证和权限检查的细节:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {'class': 'logging.StreamHandler'},
    },
    'loggers': {
        'rest_framework': {
            'handlers': ['console'],
            'level': 'DEBUG',
        },
    },
}

发起请求后查看控制台日志,确认DRF是否执行了认证和权限检查步骤,有没有跳过的情况。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:25:06