跳至正文
-
关注
IT极限技术分享汇

ITmax

IT极限技术分享汇

ITmax

  • 首页
  • 商店
  • 我的帐户
  • 结账
  • 购物车
  • 首页
  • 商店
  • 我的帐户
  • 结账
  • 购物车
关

搜索

技术分享

fastapi 如何在中间件中抛出 401

作者 mumupudding
2023年7月6日 1 分钟阅读
0

fastapi 如何在中间件中抛出异常?

chatGPT 给我的方案是:raise HTTPException(status_code=401, detail="Invalid token")

但是实际没用,客户端收到的还是 500

实际应该 return 一个 response

参考代码:

@app.middleware("http")
async def get_user_id(request: Request, call_next):
    from core.mysql.models import SessionTable
    from core.mysql.models import SessionTable
    from core.mysql.models import UserTable
    from apps.user.schemas import User
    from playhouse.shortcuts import model_to_dict

    session_key = request.cookies.get("session_key")
    if session_key:
        try:
            session: SessionTable | None = SessionTable.get_or_none(
                session_key=session_key)
            if session:
                user_id = session.user_id
                if user_id:
                    request.state.user_id = user_id
                    user: UserTable | None = UserTable.get_or_none(id=user_id)
                    request.state.user = User(**model_to_dict(user))
        except Exception as error:
            logger.warning(error)
    if not session_key or not request.state.get('user_id', None):
        return Response(status_code=401, content='Invalid token')
    response = call_next(request)
    return response

https://segmentfault.com/a/1190000043976788

作者

mumupudding

关注我
其他文章
上一个

浅谈业务级灾备的架构模式

下一个

APP流水线测试领域探索与最佳实践 | 京东物流技术团队

暂无评论!成为第一个。

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Copyright 2026 — IT极限技术分享汇. 备案号:浙ICP备17006560号-2