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

Django魔法链接登录报错:Authentication credentials were not provided

魔法链接登录接口Unauthorized错误排查方案

1. 检查视图权限配置

  • 确认生成魔法链接的UserAuthView是否误加了登录权限限制,比如@login_required装饰器,或者DRF中设置了IsAuthenticated权限类。魔法链接生成接口应该允许匿名访问,需改为AllowAny:
    from rest_framework.permissions import AllowAny
    
    class UserAuthView(APIView):
        permission_classes = [AllowAny]
        # 剩余业务代码
    

2. 校验URL路由匹配逻辑

  • 检查urls.py中/v1/magiclink是否正确关联到UserAuthView,避免误指向带权限校验的其他视图。
  • 排查是否有优先级更高的路由(比如/v1/前缀的全局路由)提前匹配请求,并附加了权限拦截规则。

3. 自定义用户模型的认证逻辑检查

  • 如果自定义用户模型重写了authenticate等认证方法,排查是否存在逻辑错误,导致匿名请求被错误判定为未授权。
  • 确认魔法链接生成接口的业务逻辑中,没有强制执行用户身份认证的步骤。

4. 排查中间件拦截影响

  • 检查项目中间件配置,是否存在自定义中间件在请求到达视图前就进行了权限校验,拦截了匿名请求。
  • 比如是否有中间件强制要求所有请求携带认证令牌,而魔法链接生成接口不需要令牌验证。

5. 请求方式与参数校验

  • 确认请求方式符合视图要求:比如视图仅支持POST请求,但实际用了GET请求,部分场景下会被权限逻辑误判为未授权(通常是405,但也可能返回401)。
  • 检查请求头是否携带了无效的认证信息(比如错误的Token),导致后端认证失败返回401。

6. 调试视图执行流程

  • 在UserAuthView的请求处理方法开头添加日志,确认请求是否到达视图层:
    import logging
    
    logger = logging.getLogger(__name__)
    
    class UserAuthView(APIView):
        def post(self, request):
            logger.info("魔法链接生成接口接收到请求")
            # 剩余业务代码
    

如果日志未打印,说明请求在视图前就被拦截,需回到路由、中间层排查。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:27:06