Flask 烧瓶药水+;正在锁定用户资源

Flask 烧瓶药水+;正在锁定用户资源,flask,flask-login,flask-potion,Flask,Flask Login,Flask Potion,我正在遵循烧瓶药剂教程,并试图保护我的api。我一直在试图弄清楚如何在用户端点上设置权限,以便用户无法查看其他用户的记录。这是我的密码: class UserResource(PrincipalResource): class Meta: model = User permissions = { 'read': 'id' } class ArticleResource(PrincipalResource):

我正在遵循烧瓶药剂教程,并试图保护我的api。我一直在试图弄清楚如何在用户端点上设置权限,以便用户无法查看其他用户的记录。这是我的密码:

class UserResource(PrincipalResource):
    class Meta:
        model = User
        permissions = {
            'read': 'id'
        }

class ArticleResource(PrincipalResource):
    class Schema:
        author = fields.ToOne('user')

class Meta:
    model = Article
    read_only_fields = ['author']
    permissions = {
        'create': 'editor',
        'update': ['user:author', 'admin']
    }
我需要自定义权限才能执行此操作吗?这似乎是一种常见的情况。

烧瓶主体中的所有“需要”都是元组。用户资源的权限配置,
{'read':'id'}
(如您所写)与角色
('role','id')
匹配。您希望匹配类似于
('id',user\u id)
的内容。不幸的是,这目前不受支持

但是,您可以匹配的是项目需求,例如
('read',user\u id',user')
。要匹配该项需要,请将权限配置设置为
{'read':'read'}
,然后在加载您的标识时,只需按如下方式添加项权限:

identity.provides.add(ItemNeed('read', current_user.id, 'user'))

我对此感到有点困惑——在这个例子中,ItemNeed的第一个属性必须命名为“read”有什么原因吗?这就是让我绊倒的原因。同样出于某种原因,当我实现了类似的东西并访问了一个我无法访问的资源时,我得到了404?是这样吗?@Dabeeenster项目需求是
(方法、值、模型)
的三倍。您引用的ItemNeeded允许对用户模型进行读取访问。为了简化这一点,有一个待定的PR:从下一个版本开始,
“user:$id”
将解析为用户需要。@dabeeenster 404是正确的响应。如果您返回400,它将允许人们监视他们无法访问的资源的ID。非常感谢您清除它。伟大的工程!期待下一版本。。。