Falcon API的策略中间件

falcon-polic的Python项目详细描述


falcon-policy包提供了一个中间件组件 支持简单的策略控制,如基于角色的路由访问 通过配置。

策略规则的配置方法支持动态授权 需要按需调整策略而不需要新策略的用例 服务部署。

安装

$ pip install falcon-policy

用法

RoleBasedPolicy中间件类检查每个传入的请求 并验证来自请求上下文的roles列表;它应该是 由身份验证中间件填充。如果请求上下文不是 使用roles列表填充,然后中间件将返回 给定请求的相应角色的X-Roles头。 X-Roles头的用法主要用于处理 在中间件堆栈之外进行身份验证或使用 身份验证已禁用。

实施说明:

如果请求上下文类型不是字典,则中间件将假定 该req.context是具有roles属性的对象。

开始:

  • 创建策略配置
  • 使用配置创建RoleBasedPolicy的实例
  • 将实例传递给falcon.API()初始值设定项:
fromfalcon_policyimportRoleBasedPolicypolicy_config={'roles':['admin','creator','observer',],'groups':{'create':['admin','creator'],'update':['admin','creator'],'read':['admin','creator','observer'],'delete':['admin'],},'routes':{'/quote':{'GET':['read'],'POST':['create'],'PUT':['update'],'DELETE':['delete'],},'/quote/{id}':{'GET':['read'],'POST':['create'],'PUT':['update'],'DELETE':['delete'],},'/status':{'GET':['@any-role'],'HEAD':['@passthrough'],},},}app=falcon.API(middleware=[RoleBasedPolicy(policy_config)])

如果验证失败,将引发falcon.HTTPForbidden的实例。

配置

策略配置分为三个部分:

  • roles:是与提供的角色值相对应的名称列表 通过你的认证系统。
  • groups:为方便起见,是多个角色名称的别名/分组。
  • 路由:包含给定的角色和/或组权限的结构 猎鹰路线和方法。

专业角色:

^{tt1}$ offers two specialty roles types that should be used with care:

  • ^{tt13}$: Allows any defined role
  • ^{tt14}$: Allows all users (authenticated and unauthenticated)

关于Falcon

Falcon是一个建筑精益和 意味着云api和应用程序后端。它鼓励其他建筑风格, 在保持highly effective的同时尽量少做。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用并发hashmap减少线程池的内存使用?   java为什么在提交片段后出现错误“getParentActivityIntent:badActivity name”?   vim UltiSnips扩展java包   java给出了一个名称列表,如何插入、删除、显示、搜索和退出?Java程序   java Spring集成:只从FTP服务器下载新的或更新的文件?   使用Java中的Scala:将函数作为参数传递   java线程1每秒填充一个映射,线程2每60秒保存一个条目   java从私有类访问公共类中的方法/字段   如何使用ApacheSpark流媒体和JavaAPI从所有人那里获取英语推文?   java是否可以在父标记和子标记中编写XMLSchemainstance?   java无法读取文本文件,也找不到解决方案   java在运行时加载类时无法创建bean