首页 > 其他分享 >fastapi - 获取token

fastapi - 获取token

时间:2024-05-11 14:21:57浏览次数:23  
标签:get fastapi 获取 token api key FastAPI import

在FastAPI通过标注Header类型获取Authorization时, 会导致openapi页面的请求没法使用

from typing import Annotated

from fastapi import FastAPI, Header, Request, Depends, Cookie, Query, APIRouter
from fastapi.routing import APIRoute
from fastapi.security.api_key import APIKeyCookie, APIKeyHeader, APIKeyQuery
from fastapi.openapi.models import SecuritySchemeType

app = FastAPI()

@app.get("/get_key")
def get_api_key(
    request: Request,
    authorization: Annotated[str, Header()],
):
    print(authorization)
    print(request.headers)
    return "OK"

这是因为openapi发请求时会过滤掉token的字段, 导致fastapi报错

img

为了解决这个问题fastapi把认证相关的逻辑放到了fastapi.security.api_key模块,通过Depends的方式来解决的.

from typing import Annotated

from fastapi import FastAPI, Header, Request, Depends, Cookie, Query, APIRouter
from fastapi.routing import APIRoute
from fastapi.security.api_key import APIKeyCookie, APIKeyHeader, APIKeyQuery
from fastapi.openapi.models import SecuritySchemeType

app = FastAPI()

@app.get("/get_key")
def get_api_key(
    request: Request,
    authorization: Annotated[str,
                             Depends(APIKeyHeader(name="authorization"))],
):
    print(authorization)
    print(request.headers)
    return "OK"

img

img

这样就解决了!

标签:get,fastapi,获取,token,api,key,FastAPI,import
From: https://www.cnblogs.com/houchuanqi/p/18186383

相关文章

  • MySQL如何快速获取binlog的开始时间和结束时间
    之前写过一篇文章MySQL如何获取binlog的开始时间和结束时间[1],文章里面介绍了如何获取MySQL数据库二进制日志(binlog)的开始时间与结束时间的一些方法。实际应用当中,我们可能还会遇到效率/性能方面的问题。最近对这个问题做了一些研究,这里就介绍一下如何快速获取MySQL二进制日志(bi......
  • el-table当前行的获取和设置,用于表格行操作
    1、在vue的data区声明当前行变量对象,如果当前行的信息用于了按钮的状态则需要赋予默认值,否则会报找不到属性的错误,比如下面会用到当前记录的status属性值控制按钮是否可用。//表格选中的行data(){return{currentRow:{status:'0'},}}2、在metho......
  • FastAPI 创建
    1.安装FastAPI和Uvicorn:pipinstallfastapiuvicorn2.创建FastAPI应用。main.py:fromfastapiimportFastAPIapp=FastAPI()@app.get("/")defread_root():return{"Hello":"World"}3.在命令行中使用Uvicorn启动你的应用:uv......
  • FastApi-tortoise-jwt-mysql
    抽了半天时间学了一下fastapi,为了方便,代码没分结构。importsysimportjwtimportuvicorn,asyncio,signal,osfromfastapiimportFastAPI,HTTPException,Dependsfromfastapi.securityimportOAuth2PasswordBearer,OAuth2PasswordRequestFormfromtortoiseimportfie......
  • nginx 获取cooike的2种方式
    server{listen10001;server_namelocalhost;default_typetext/html;location=/favicon.ico{log_not_foundoff;access_logoff;}set$userN......
  • Mapbox GL JS access token 问题
    使用MapboxGLJS时出现如下错误Error:AvalidMapboxaccesstokenisrequiredtouseMapboxGLJS.Tocreateanaccountoranewaccesstoken,visithttps://account.mapbox.com/解决方法:(1)MapBox在内网使用时,accesstoken不能使用,导致局域网内地图服务不能使用,只需修......
  • 如何获取股票外汇期货的实时行情数据和历史行情数据?
    ​支持如下产品对接:外汇、国际期货、国内期货、国际金银、数字货币、股指期货、美股、印度股、港股、台股、A股产品代码获取地址:http://39.107.99.235:1008/market/market.php产品代码:比特币btcusdt以太坊ethusdt恒指期货HSI德指期货DAX英镑美元fx_sgbpusd欧......
  • 分享一个使用python调用websocket获取实时行情数据的方法
    这个站点可以获取:外汇、国际期货、国内期货、贵金属、能源、虚拟货币、股指期货、美股、台股、港股、印度股、A股、ETF等以下是Python的连接demo,可以参考下。同时也支持其他后端语言的连接,PHP、Java等。获取品种地址:http://39.107.99.235:1008/market/market.phpimportj......
  • 大语言模型中的特殊Token作用
    在我深入研究大型语言模型时,我意识到特殊Token不仅仅是数据元素,它们在模型中扮演着关键角色,帮助理解和处理语言结构。举个例子,BERT的CLS标记帮助模型把握整个句子的含义,MemoryTransformer的记忆Token则让模型能持续跟踪对话的上下文,而Meta最近提出的RegisterToken为处理视觉任务......
  • dbt macro 中获取relation 的几种方法
    很多时候我们是希望在自己开发的macro中引用relation这样可以获取实际模型在数据库中的信息,方便数据的写入,或者进行查询实现动态能力,尤其在进行数据质量方便的处理时候,以下简单说明下一些可选的方法参考方法直接使用api.Relation.create创建新的如果知道一些信息(database......