python
auth_error
ai_generated
true
FastAPI HTTP 异常:401 未授权:令牌已过期
fastapi.exceptions.HTTPException: 401 Unauthorized: Token expired
ID: python/fastapi-oauth2-token-expired
80%修复率
84%置信度
0证据数
2025-10-15首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.9 | active | — | — | — |
| 3.10 | active | — | — | — |
根因分析
OAuth2 令牌已过期,需要刷新
English
OAuth2 令牌已过期,需要刷新
解决方案
-
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} -
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}'})
无效尝试
常见但无效的做法:
-
忽略过期并继续使用旧令牌
95% 失败
服务器会拒绝请求
-
延长令牌有效期而不刷新
70% 失败
安全风险增加