Flask 烧瓶药水+;正在锁定用户资源
我正在遵循烧瓶药剂教程,并试图保护我的api。我一直在试图弄清楚如何在用户端点上设置权限,以便用户无法查看其他用户的记录。这是我的密码: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):
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。非常感谢您清除它。伟大的工程!期待下一版本。。。