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

使用Python调用DELETE API失败:提示用户未登录

问题诊断与解决方案

核心问题:未使用MFA验证后的有效Token

大多数系统在登录获取初始Token后,完成MFA验证会生成新的、具备完整权限的会话Token,而你当前仍在使用登录阶段的旧Token发起删除请求,这就是导致"User not logged in"的主要原因。

具体修复步骤

  1. 捕获MFA验证响应中的新Token
    在MFA验证请求后,从响应中提取更新后的JWT Token,替换原来的旧Token:

    # MFA验证请求后添加以下代码
    mfa_response = requests.post(mfa_verify_url, json=todo, headers={'Authorization': 'Token '+token})
    # 提取MFA验证后的新Token
    new_token = mfa_response.json().get('jwt_token').get('token')
    
  2. 使用新Token发起删除请求
    删除请求中替换为新获取的Token:

    headers = {'Authorization': f'Token {new_token}'}
    response = requests.delete(tenant_delete_url, headers=headers)
    
  3. 可选:保持会话一致性
    复用同一个requests会话,避免Cookie或会话状态丢失:

    # 初始化会话
    session = requests.session()
    session.trust_env = True
    
    # 登录请求用同一个会话
    response = session.post(api_url, json=todo)
    token = response.json().get('jwt_token').get('token')
    
    # MFA验证也用同一个会话
    mfa_response = session.post(mfa_verify_url, json=todo, headers={'Authorization': 'Token '+token})
    new_token = mfa_response.json().get('jwt_token').get('token')
    
    # 删除请求复用会话和新Token
    headers = {'Authorization': f'Token {new_token}'}
    response = session.delete(tenant_delete_url, headers=headers)
    

其他排查点

  • 检查MFA验证请求的响应状态码(比如print(mfa_response.status_code)),确认MFA验证是否成功完成(通常是200或201)。
  • 确认API文档中Authorization头的格式是否为Token {token},部分系统可能要求Bearer {token},如果是这种情况,需要统一修改头格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:30:09