当前位置: 首页 > news >正文

FastAPI 学习之路(二十七)安全校验

你写API接口肯定你是希望是有权限的人才能访问,没有权限的人是不能访问的,那么我们应该如何去处理呢,我们可以用的验证方式有很多,我们这次分享的是用:OAuth2来认证。那么我们看下,需要怎么才能实现呢。我们现在的接口有一部分需要用OAuth2认证后才可以访问,另一部分可以随便去访问的,那么我们看下,我们应该如何去实现。

需求:1.items接口任意都可以访问

           2.item接口需要认证后才可以访问。

 

   我们看下如何去实现上面的需求

from fastapi import FastAPI, Depends
from fastapi.security import OAuth2PasswordBearer

oauth2_scheme =  OAuth2PasswordBearer(tokenUrl="token")

app = FastAPI()

fake_db_items = [{"city": "beijing"}, {"city": "shanghai"}, {"city": "guangzhou"}]


@app.get("/items")
def read_items():
   return fake_db_items


@app.get("/item")
def read_users(city: str, token: str = Depends(oauth2_scheme)):
    for item in fake_db_items:
        if item["city"] == city:
            return item
    return {"msg": "not exist"}

if __name__ == '__main__':
    import uvicorn
    uvicorn.run("main:app", reload=True, debug=True)

我们去请求下items(不带Authorization,可以看到token的值为空),是可以正常返回的

 我们在对其增加Authorization,即加上token值(token值随意),也能正常返回

 

  那么我们看下item接口,增加认证(可以看到也是可以返回我们想要的数据的)

 我们再看下item不带认证,如何处理的(发现校验未通过) 

其实基于OAuth2来做处理其实是很简单的,我们只是写了一个简单的demo。我们并未实现自己的token值,也没有做真正的校验,接下来我们会慢慢深入

 

相关文章:

  • office32位和64位有什么区别
  • 猿创征文|python求解四位数 青少年编程电子学会python编程等级考试三级真题解析2021年03月
  • 当事人胜诉后,所预交受理费是否应予退还
  • uniapp的拨打电话,下拉和上划
  • 如何确定 RMAN 的多路复用级别
  • Java excel poi 读取已有文件 ,动态插入一列数据
  • Java项目:SSM企业工资管理系统
  • Python基于Django的汽车销售网站
  • 花好月圆时,邀你一起来读诗!
  • 在Slicer中添加点、直线和曲线
  • Win7下安装Docker(虚拟机win7)
  • JavaWeb对于JSP内置对象及其作用域的深入理解与运用
  • HarmonyOS(鸿蒙系统)物联网开发教程——环境搭建
  • 《MySQL》增删查改(进阶)
  • 【Django】REST_Framework框架——APIView类源码解析
  • [PHP内核探索]PHP中的哈希表
  • 【5+】跨webview多页面 触发事件(二)
  • 10个确保微服务与容器安全的最佳实践
  • Git学习与使用心得(1)—— 初始化
  • go append函数以及写入
  • js算法-归并排序(merge_sort)
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • python docx文档转html页面
  • 初识 beanstalkd
  • 第十八天-企业应用架构模式-基本模式
  • 关于for循环的简单归纳
  • 前端面试之闭包
  • 巧用 TypeScript (一)
  • 日剧·日综资源集合(建议收藏)
  • 使用iElevator.js模拟segmentfault的文章标题导航
  •  一套莫尔斯电报听写、翻译系统
  • 用Python写一份独特的元宵节祝福
  • 原生Ajax
  • 白色的风信子
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #NOIP 2014# day.1 T2 联合权值
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (20050108)又读《平凡的世界》
  • (day 12)JavaScript学习笔记(数组3)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (附源码)ssm高校实验室 毕业设计 800008
  • (简单) HDU 2612 Find a way,BFS。
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (四)Controller接口控制器详解(三)
  • (一)u-boot-nand.bin的下载
  • (一)认识微服务
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)重识new
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .net core 依赖注入的基本用发
  • .NET Project Open Day(2011.11.13)
  • .NET 回调、接口回调、 委托
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖