0

0

Python API 接口如何做权限控制?

冷漠man

冷漠man

发布时间:2026-01-18 21:11:12

|

233人浏览过

|

来源于php中文网

原创

Python API权限控制核心是在请求到达业务逻辑前拦截验证,常用JWT/OAuth2鉴权、RBAC/ABAC授权、API Key限流及细粒度校验,需防ID越权、批量绕过、错误泄露等漏洞。

python api 接口如何做权限控制?

Python API 接口的权限控制,核心是“在请求到达业务逻辑前,拦截并验证调用方是否有权访问该资源或操作”。常用方式包括 Token 鉴权、角色/权限模型、API Key 限制和细粒度访问控制,关键不在技术选型,而在设计是否贴合实际场景(如内部服务调用 vs 公开开放平台)。

使用 JWT 或 OAuth2 做身份+权限校验

JWT 是最常用的无状态鉴权方案。用户登录后颁发含 user_idrolesscopes 的 token,后续每个请求携带 Authorization: Bearer xxx。服务端解析 token 并检查权限字段,不查数据库,性能好。

  • 推荐用 PyJWT + 自定义中间件(FastAPI 用 Depends,Flask 用 before_request)做全局校验
  • 敏感接口可要求 scope(如 "user:delete"),避免仅靠 role(如 "admin")粗放放行
  • token 过期时间要合理:内部系统可设 24h,前端频繁交互建议 1h + 刷新机制

基于角色(RBAC)或属性(ABAC)动态授权

单纯验身份不够,还需判断“当前用户能否执行这个动作”。RBAC 适合组织结构清晰的系统(如 admin / editor / viewer),ABAC 更灵活(如 “允许部门A的组长修改本部门订单”)。

  • FastAPI 中可用依赖项封装权限检查:Depends(RequireRole("editor"))Depends(CanEditOrder(order_id))
  • 把权限规则外置(如 JSON 配置或策略服务),避免硬编码;例如定义 {"endpoint": "/api/v1/orders/{id}", "method": "PUT", "rule": "owner_or_dept_admin"}
  • 数据库中存用户-角色-权限关系表,查询时用 JOIN 或预加载减少 N+1 查询

API Key + 白名单 + 请求频控组合加固

面向第三方开发者时,仅靠账号密码或 JWT 不够安全。API Key 应绑定应用、限流、限定 IP 或 Referer,并配合签名防止重放。

稿定AI
稿定AI

拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能

下载

立即学习Python免费学习笔记(深入)”;

  • Key 存 Redis,记录剩余调用量、最后调用时间;每次请求原子性扣减(DECR)并检查阈值
  • 对高危接口(如删除、导出)强制要求二次认证(如额外传 X-Confirm: true 或短信验证码)
  • fastapi-limiter 或自定义中间件实现 per-key / per-ip / per-endpoint 多级限流

避免常见疏漏点

权限漏洞往往不出现在主流程,而藏在边界情况里:

  • ID 参数未校验归属:用户 A 传 /orders/123后端没检查 123 是否属于 A,导致越权读取
  • 批量操作绕过单条校验:接口支持 POST /orders/batch-delete,但只验了用户有 delete 权限,没验每条 ID 是否可删
  • 错误信息泄露权限逻辑:返回 {"error": "Permission denied for role 'user'"} 暴露系统权限结构
  • 忽略 OPTIONS、HEAD 等方法:某些框架默认放行,但它们也可能触发敏感逻辑(如缓存预检暴露路径)

权限控制不是加个装饰器就完事,而是贯穿认证、鉴权、审计的闭环。从最小权限原则出发,先禁所有,再按需开;上线前用越权测试脚本扫一遍关键接口,比事后补救更有效。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

759

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

639

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

762

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

618

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1265

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

549

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

709

2023.08.11

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 4.3万人学习

Django 教程
Django 教程

共28课时 | 3.2万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号