有限制的flask restful api 动态端点

如何解决有限制的flask restful api 动态端点

所以我才刚接触烧瓶几周。为了更多地学习flask,我给自己设定了一个目标,就是构建自己的api。

API 用例:

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

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

当前状态:

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

我的问题:

有没有办法根据用户 ID 限制用户。我的意思是 john 只能访问对 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?