【问题标题】:flask restful api dynamic endpoints with restrictions带有限制的烧瓶restful api动态端点
【发布时间】:2021-04-07 00:59:52
【问题描述】:

所以我对烧瓶只有几周的时间比较陌生。为了更多地学习烧瓶,我为自己设定了一个目标,那就是构建自己的 api。

API 用例:

  1. 经过身份验证的用户应该能够访问端点
    www.mydomain.com/api/ 并执行以下活动(仅限他们的
    任务)

    • 增加计数(POST/PUT)
    • 减少计数(删除)
    • 重置计数
  2. 未经身份验证的用户应该能够转到 www.mydomain.com/api/john 并查看 John 的指标。我希望有很多用户都有自己的指标

当前状态:

我可以执行、发布、获取、放置和删除操作(尚未设置身份验证...)

我的问题:

有没有办法根据用户 ID 限制用户。我的意思是 john 只能对www.mydomain.com/api/john 执行请求。

【问题讨论】:

    标签: python api flask flask-restful flask-httpauth


    【解决方案1】:

    有几种方法可以处理这个问题,这一切都取决于您的要求。

    您可以构建自己的(这通常是我所做的),或者您可以使用Flask-User 支持的基于角色的授权。

    你可以阅读更多关于它是如何工作的here

    请务必查看他们的example app,以了解如何将它们组合在一起。

    如果您有自己的自定义权限,这将基于用户 ID。然后您可以遵循相同的概念,但根据用户 ID 与角色进行处理。甚至可能将权限级别存储在用户对象(is_admin、is_general_user 等)中,例如像这样(伪代码):

    class User:
       is_admin = false
       is_read_only = false
    
       def __init__(**kwargs):
           # handle kwargs to set permissions
    

    然后您可以在某些继承的基础工厂或其他东西(伪代码)中定义用户后访问您的 User 变量:

    u = User(**my_permissions)
    
    if(u.is_admin):
        # do something
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-14
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多