flask restful api 有限制的动态端点
flask restful api dynamic endpoints with restrictions
所以我才刚接触 Flask 几周。为了进一步了解 Flask,我为自己设定了一个 objective 来构建自己的 api。
API的用例:
经过身份验证的用户应该能够访问端点
www.mydomain.com/api/ 并进行以下活动(仅限他们
任务)
- 增加计数 (POST/PUT)
- 减少计数(删除)
- 重置计数
未通过身份验证的用户应该能够转到 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
所以我才刚接触 Flask 几周。为了进一步了解 Flask,我为自己设定了一个 objective 来构建自己的 api。
API的用例:
经过身份验证的用户应该能够访问端点
www.mydomain.com/api/ 并进行以下活动(仅限他们
任务)- 增加计数 (POST/PUT)
- 减少计数(删除)
- 重置计数
未通过身份验证的用户应该能够转到 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