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

Django已登录状态下request.user返回AnonymousUser问题求助

问题排查与解决方案

核心原因

  • 你提供的接口是M-Pesa的异步回调接口,该请求由M-Pesa官方服务器主动发起,而非已登录的用户端发起,请求不携带你站点的用户身份凭证,因此Django无法识别登录身份,request.user固定返回AnonymousUser,属于正常逻辑。
  • 代码本身存在语法错误:Mpesa.objects.create方法中Paid_user=request.user行末尾缺少逗号,运行时会直接抛出语法异常,需先补全。

其他可能原因(非当前回调场景适用)

  • 视图未配置登录校验规则:函数视图未添加@login_required装饰器、类视图未继承LoginRequiredMixin时,未登录用户访问也会返回AnonymousUser。
  • 认证配置异常:settings.py中身份认证类配置错误,或者前端请求未正确携带认证凭证(如JWT的Authorization头、会话Cookie等),也会导致用户身份识别失败。

适配当前回调场景的解决方案

因为第三方回调无法直接获取用户身份,你需要通过支付标识关联用户:

  1. 在用户登录后发起支付请求的接口中,生成唯一的商户订单号,将订单号、当前登录用户ID、支付金额等信息预存入支付流水表,同时将订单号作为AccountReference参数传递给M-Pesa的下单接口。
  2. 回调处理时,从返回参数中取出M-Pesa回传的AccountReference或CheckoutRequestID字段,匹配预存的支付流水表获取对应的用户ID,再赋值给Mpesa模型的Paid_user字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 23:45:08