flask restful api 有限制的动态端点

flask restful api dynamic endpoints with restrictions

所以我才刚接触 Flask 几周。为了进一步了解 Flask,我为自己设定了一个 objective 来构建自己的 api。

API的用例:

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

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

当前状态:

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

我的问题:

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

的请求

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

您可以构建自己的(这通常是我所做的),或者您可以使用 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