首页 > 其他分享 >FastAPI Request中存储信息

FastAPI Request中存储信息

时间:2023-09-22 14:34:36浏览次数:35  
标签:存储 return jwt FastAPI Request token state response

在请求前拦截,检测token

使用 Request.state.XXX 存信息

from fastapi import Request, FastAPI              
from py_jwt.use_jwt import decode_token           
                                                  
                                                  
def register_middleware(app: FastAPI):                                                              
    @app.middleware("http")                       
    async def dispath(r: Request, call_next):     
        '''                                       
        地址是 /user/get_token 直接通过           
        其余需要检测token                         
        '''                                                                                         
        if r.url.path == "/user/get_token":       
            response = await call_next(r)         
            return response                       
        else:                                     
            if "Authorization" in r.headers:      
                jwt = r.headers["authorization"]  
                get_jwt = jwt.split("jwt ")[-1]   
                ret = decode_token(get_jwt)       
                                                  
                if ret["ret"] == 1:               
                    # 信息添加到 Request.state    
                    r.state.isok = 1              
                    r.state.token = ret["result"] 
                    response = await call_next(r) 
                    return response               
                else:                             
                    r.state.isok = 0              
                    r.state.msg = ret["result"]   
                    response = await call_next(r) 
                    return response               
            else:                                 
                r.state.isok = 0                  
                r.state.msg = "no token"          
                response = await call_next(r)     
                return response                   

函数中读取

@router.get("/home")
def user_home(r: Request):
    # 读取信息
    if r.state.isok == 0:
        return {"result": r.state.msg}

    print(r.state.token)
    return {"result": "user home"}

标签:存储,return,jwt,FastAPI,Request,token,state,response
From: https://www.cnblogs.com/snakej/p/17722280.html

相关文章

  • 小米云原生文件存储平台化实践:支撑 AI 训练、大模型、容器平台多项业务
    小米作为全球知名的科技巨头公司,已经在数百款产品中广泛应用了AI技术,这些产品包括手机、电视、智能音箱、儿童手表和翻译机等。这些AI应用主要都是通过小米的深度学习训练平台完成的。在训练平台的存储方案中,小米曾尝试了多种不同的存储方式,包括Ceph+NFS、HDFS和对象存储挂......
  • 在线问诊 Python、FastAPI、Neo4j — 创建 节点关系
    目录关系:症状-检查关系:疾病-症状代码重构relationship_data.csv症状,检查,疾病,药品,宜吃,忌吃"上下楼梯疼,不能久站,感觉有点肿","膝关节核磁","右膝髌上囊及关节腔少量积液","扶他林","西红柿,香蕉","辣椒,大蒜""眼睛胀痛,干涩,畏光,眼胀,眼痛,看东西有时候清楚有时候不清楚......
  • 第三方平台如何级联到国标 GB28181协议 EasyGBS 视频存储平台
    国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入,并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。其中,级联功能可以实现平台与平台之间的数据互联互通,降低数据共享难度,在很多安防场景中均有应用,如明厨亮灶、平安乡......
  • python+playwright 学习-81 page.expect_request()捕获网络请求
    前言page.expect_request()可以捕获网页上发出去的请求,当有多个请求时,可以根据请求url,请求方式判断。expect_request官方文档示例withpage.expect_request("http://example.com/resource")asfirst:page.get_by_text("triggerrequest").click()first_request=firs......
  • C语言中整形的大小端存储
    (C语言中整形的大小端存储)1.案例引入众所周知,在IDEVisualstudio中,调试后可以在内存窗口中看见程序中一些变量的地址以及值我们这里将一个16进制数字0x12345678存到内存中intmain(){ inta=0x12345678; return0;}按下F10后进入调试,打开内存窗口,找到变量a的地址,......
  • 【Azure Storage Account Table】询问批量将存储账户中的表嵌入另一个账户中的办法
    问题描述询问批量将存储账户中的表嵌入另一个账户中的办法? 问题解答方式一:使用 AzCopy 使用Azcopy做表格的导入导出,注意您需要使用Azcopy7.3版本来实现对Table的操作,可以选择导出到Blob中,这样导出的数据不会保存在本地,以及该指定支持并发导出。从表存储导出数据: htt......
  • Mysql数据库存储引擎
    1.存储引擎的概念1.1什么是存储引擎MySQL中的数据用各种不下同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎。存储引擎是MySQL将数据存储在文件系统中的存储方式......
  • docker存储路径修改到自定义目录路径
    通过修改Docker配置文件的方式来修改Docker数据存储路径,以减少系统盘的占用空间。具体步骤如下:1、停止Docker服务sudosystemctlstopdocker2、备份当前的Docker数据存储目录/var/lib/dockersudomv/var/lib/docker/var/lib/docker.bak3、创建新的Docker数据存......
  • mysql存储引擎:myisam
    Myisam:1.myisam是MySQL默认的存储引擎。myisam不支持事务,也不支持外键,优点是访问的速度快,对事物完整性没有要求(select,insert为主的应用都可以使用这个引擎来创建表)2.myisam的表支持3种不同的存储格式,分别是静态表(字段都是固定长度,优点存储迅速,容易缓存。缺点:占用的空间通常比动态......
  • PostgreSQL 9.6修改数据存储路径
    说明使用的PostgreSQL版本是9.6版本的。实际项目部署过程中,数据库的数据有时候被要求保留5-10年,甚至更久。随着数据量的增大,磁盘占用空间也会随之增大。当数据库默认的安装路径所在目录的磁盘空间不够大时,可以考虑扩容,或者修改数据库数据存放的路径,将路径指定到一个足够大......