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 JList侦听器找不到符号   多点触摸跨平台java应用程序(Windows、Mac和Linux(Ubuntu)(可能是Android))   在UnitTest中找不到java类加载器资源   java当我尝试在Eclipse中运行我的minecraft mod时,我总是遇到这个错误,这是什么意思?   内部有一个同步块的静态方法,在java中阻止整个类?   不支持java操作:具有BillableStatus的费用在采购中应具有AccountBasedExpenseLineDetail行的CustomerRef   java运行时常量池GC集合   java无法解析配置“:app:\u debugApk”的所有依赖项。找不到名为“default”的配置   在GCP计算引擎中托管Neo4j的java   java如何从BroadcastReceiver更新片段选项卡?   线程“main”组织中的java异常。冬眠注释异常:@org。冬眠注释。表引用未知表:ProductForPractice   在Java/Groovy中嵌入处理   java Android REST教程/示例项目   java我可以在同一测试中在一个模拟器上启动应用程序,在另一个模拟器上启动移动浏览器吗?   java如何更改通知横幅的方向?   安卓 Java帮助实现Firebase授权   if else之后的rs.next()中出现java错误?