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

FastAPI端点安全:路由认证依赖未生效导致未授权访问如何修复

问题根源

你配置的路由保护依赖指向了负责登录跳转的路由函数login,该函数没有校验当前用户登录状态的逻辑,因此无法实现未认证拦截。另外注意get_api.py中get_higs函数定义末尾缺少冒号,属于语法错误,需要补充修正。

解决步骤
  1. 新增专门的登录态校验依赖函数,在main.py中添加如下代码:
from fastapi import status, HTTPException
from fastapi.responses import RedirectResponse

async def validate_login(request: Request):
    user = request.session.get('user')
    if not user:
        # 场景1:纯接口服务,直接返回401未认证
        # raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="未认证用户,请先登录")
        # 场景2:需要跳转到登录页,使用如下代码
        return RedirectResponse(url=request.url_for('login'))
  1. 修改PROTECTED依赖配置,替换为上述校验函数:
PROTECTED = [Depends(validate_login)]

修改完成后,get_api下的所有接口都会自动触发登录态校验,未登录用户无法访问接口。

可选优化(规范路由配置)

你当前get_api.py中所有接口路径都手动加了/api前缀,可以在注册路由时统一配置前缀,避免重复编写:

  • 首先修改get_api.py中的接口路径,去掉/api前缀:
@router.get("/higs", tags=["higs"])
def get_higs(db: Session = Depends(get_db)):
    # 原有逻辑不变
  • 然后修改main.py中注册路由的代码,添加prefix参数:
app.include_router(get_api.router, prefix="/api", dependencies=PROTECTED)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:54:03