python auth_error ai_generated true

FastAPI HTTP 异常:401 未授权:令牌已过期

fastapi.exceptions.HTTPException: 401 Unauthorized: Token expired

ID: python/fastapi-oauth2-token-expired

其他格式: JSON · Markdown 中文 · English
80%修复率
84%置信度
0证据数
2025-10-15首次发现

版本兼容性

版本状态引入弃用备注
3.9 active
3.10 active

根因分析

OAuth2 令牌已过期,需要刷新

English

OAuth2 令牌已过期,需要刷新

generic

解决方案

  1. 90% 成功率 实现令牌刷新机制
    from fastapi.security import OAuth2PasswordBearer
    oauth2_scheme = OAuth2PasswordBearer(tokenUrl='token', auto_error=False)
    @app.post('/refresh')
    def refresh(token: str = Depends(oauth2_scheme)):
        new_token = create_access_token(...)
        return {'access_token': new_token}
  2. 85% 成功率 在客户端捕获 401 并刷新令牌
    response = requests.get(url, headers={'Authorization': f'Bearer {token}'})
    if response.status_code == 401:
        token = refresh_token()
        response = requests.get(url, headers={'Authorization': f'Bearer {token}'})

无效尝试

常见但无效的做法:

  1. 忽略过期并继续使用旧令牌 95% 失败

    服务器会拒绝请求

  2. 延长令牌有效期而不刷新 70% 失败

    安全风险增加