在 python-fastApi 中间件中引发异常

2023-12-28

我正在尝试验证 fastapi 中间件中的令牌,但这似乎不可能。我认为中间件需要进行下一次调用,尽管这不是必需的。我无法在这个 python-fastapi 后端找到任何好的解决方案来一次性处理令牌。任何帮助表示赞赏。

@app.middleware("http")
async def add_middleware_here(request: Request, call_next):
    token = request.headers["Authorization"]
    try:
        verification_of_token = verify_token(token)
        if verification_of_token:
            response = await call_next(request)
            return response
    except InvalidSignatureError as er:
        raise HTTPException(status_code=401)

您需要返回响应。我将向您展示如何使其发挥作用:

from fastapi.responses import JSONResponse

@app.middleware("http")
async def add_middleware_here(request: Request, call_next):
    token = request.headers["Authorization"]
    try:
        verification_of_token = verify_token(token)
        if verification_of_token:
            response = await call_next(request)
            return response
        else:
            return JSONResponse(status_code=403) # or 401
    except InvalidSignatureError as er:
        return JSONResponse(status_code=401)

请注意,使用此中间件意味着您的 API 上没有登录路由(用于令牌生成)。

此外,您应该考虑使用此依赖项:https://fastapi.tiangolo.com/tutorial/security/simple-oauth2/ https://fastapi.tiangolo.com/tutorial/security/simple-oauth2/

另一件事是你可以使用fastapi.状态 https://fastapi.tiangolo.com/tutorial/response-status-code/作为您的状态代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 python-fastApi 中间件中引发异常 的相关文章

  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

    我在 Cloud9 中使用 Python AWS CDK 并且我部署简单的 Lambda 函数那应该是发送 API 请求到 Atlassian 的 API当对象上传到 S3 存储桶时 也是由 CDK 创建的 这是我的 CDK 堆栈代码 fr
  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y
  • pydev 调试器:严重警告:此版本的 python 似乎编译不正确(内部生成的文件名不是绝对的)[重复]

    这个问题在这里已经有答案了 通过运行 from sklearn datasets import fetch california housing import pandas as pd pd set option precision 4 m
  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • 为什么Python的curses中escape键有延迟?

    In the Python curses module I have observed that there is a roughly 1 second delay between pressing the esc key and getc
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 将 JSON 对象传递给带有请求的 url

    所以 我想利用 Kenneth 的优秀请求模块 https github com kennethreitz requests 在尝试使用时偶然发现了这个问题自由库API http wiki freebase com wiki API 基本上
  • 在 Pandas 中使用正则表达式的多种模式

    我是Python编程的初学者 我正在探索正则表达式 我正在尝试从 描述 列中提取一个单词 数据库名称 我无法给出多个正则表达式模式 请参阅下面的描述和代码 描述 Summary AD1 Low free DATA space in data
  • 无法在 osx-arm64 上安装 Python 3.7

    我正在尝试使用 Conda 创建一个带有 Python 3 7 的新环境 例如 conda create n qnn python 3 7 我收到以下错误 Collecting package metadata current repoda
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包

随机推荐

  • 在当前控制台中运行进程

    我正在为 Windows 编写一个基本 shell 我想知道是否有任何方法可以运行子进程 Process process 以便它使用当前的控制台窗口 我的意思是我这样做not想要重定向输入 输出 我希望该进程从当前控制台获取输入并将输出直接
  • R 不接受 xpath 查询

    您好 我正在使用 R 中的 XML 包来抓取 html 页面 感兴趣的页面是http www ncbi nlm nih gov Protein 225903367 report fasta http www ncbi nlm nih gov
  • 如何使用FreeArc来高度压缩Inno Setup中的应用程序数据? [复制]

    这个问题在这里已经有答案了 需要使我的应用程序尽可能小 至少是原始大小的一半 FreeArc 提供了很好的压缩功能 但我如何在 Inno Setup 中使用它 该答案已被取代Inno Setup 如何在解压页面添加取消按钮 https st
  • 如何查询 Cloud Firestore 中不存在的文档键

    假设我有一个带有一些可选属性的数据模型 例如 这可以是具有 名字 姓氏 和可选的 网站 属性的用户对象 在 Cloud Firestore 中 只有具有已知网站的用户文档才会设置 网站 属性 对于所有其他用户文档 此属性将不存在 我现在的问
  • 如何测试变量是否已设置?

    在PHP中 有一个isset功能 那么Java呢 我想我可以用 null对于对象 但是像这样的值类型呢 int Java 的编译器不允许您定义变量并在为其赋值之前使用它们 因此该问题不会以与 php 中相同的形式存在 EDIT 如果在您的情
  • 重新导入具有相同名称的不同Python模块

    我有一个 python 项目 需要能够运行外部脚本 这些脚本动态导入到具有多个模块的目录结构中 现在 由于这些脚本是独立编写的并且彼此不知道 因此它们通常使用相同的模块名称 这使得我在逐个导入它们时遇到问题 例如 这是我的目录结构 main
  • F# 惰性求值与非惰性求值

    我刚刚开始学习 F 所以如果这是基础的 请友善 我读过标记为惰性的函数仅计算一次 然后缓存 例如 let lazyFunc lazy 1 1 let theValue Lazy force lazyFunc 与每次调用时实际运行的此版本相比
  • 区分 ASP.NET MVC4 中的空参数和缺失参数

    我正在写一个API 我想允许 PUT 方法来更新资源 下面是代表资源的示例模型对象 var resourceToUpdate new TestResourceModel Id 5 Name testName Description desc
  • 根据当前时间戳生成 MySQL 每小时细分

    恐怕这可能是一个非常令人尴尬的简单问题 但此时我的思绪完全陷入了困境 我有一个表 存储不同人进行的活动的数量以及活动发生的时间 我想创建一个接受人员姓名作为参数的报告 并显示从当前时间戳开始的过去 24 小时内该人员每小时的活动数 now
  • 在 prolog 中表示线性函数

    我想编写复合项来表示 Y a b X 形式的总体中不同变量之间的线性关系 例如 对于由汽车组成的总体 燃料消耗 2 3 距离 我在声明该关系与人口 群体 有关时遇到问题 同时声明每个变量的值在对象内链接 即汽车 A 的燃油消耗是 2 3 汽
  • PySimpleGui:如何在文本框中输入文本?

    我正在通过参考教程来学习 PySimpleGui Link 1 https pysimplegui readthedocs io en latest tutorial and Link 2 https pysimplegui readthe
  • collectionView cellForItemAt 未被调用

    我有一个UITableView其中每个原型电池都有一个UICollectionView在里面 该集合视图应该是图像网格 我对 Swift 很陌生 已经在 google 上搜索了几个小时 并阅读了大量 StackOverflow 文章 但似乎
  • 枚举拳击和平等

    为什么这会返回 False public enum Directions Up Down Left Right static void Main string args bool matches IsOneOf Directions Rig
  • 如何使用 jQuery 解开所有父项?

    p span a href link a span p 我该如何打开一切 只留下 a href link a edit 抱歉 我应该提供更多信息 基本上 我试图瞄准所有a那是唯一的孩子span的周围是p标签 我希望以下内容能够解决问题 但它
  • BaseX REST API:设置自定义 HTTP 响应标头

    我想将以下 HTTP 标头包含到所有响应中BaseX REST API http docs basex org wiki REST Access Control Allow Origin 这可能吗 BaseX 在底层使用 Jetty 您可以
  • 如何向 java.sql.date 添加天数?

    这是我的程序 我尝试过 java sql Date logicalDate Calendar c Calendar getInstance c setTime logicalDate c add Calendar DATE 1 下面的行显示
  • Cakephp - 使用身份验证时在控制器中获取用户 ID

    这似乎是一个两步的过程 u this gt Auth gt user uid u User id 用户登录后是否会在某处设置变量 您可以使用 uid this gt Auth gt user id 查看api文档 https api cak
  • 如何测试两个移动的二维边界框的碰撞?

    OBB 具有位置 x y 速度 x y 和方向 矩阵 在定期更新的情况下 OBB 必须相互碰撞 返回被认为成功的移动部分 我查看了 GPWiki 上的多边形测试 http gpwiki org index php Polygon Colli
  • GWT 和 OSGi 集成问题

    我在将 GWT 集成到 OSGi Equinox 容器中时遇到问题 入口点网页运行 我看到我的第一页 但是 当我点击按钮实现服务器调用时 它没有运行 我使用 Firefox 并且有 firebug 然后 当我看到网络字段时 我收到下一条消息
  • 在 python-fastApi 中间件中引发异常

    我正在尝试验证 fastapi 中间件中的令牌 但这似乎不可能 我认为中间件需要进行下一次调用 尽管这不是必需的 我无法在这个 python fastapi 后端找到任何好的解决方案来一次性处理令牌 任何帮助表示赞赏 app middlew