Python Eve框架:用户限制的资源访问

Python Eve框架:用户限制的资源访问,python,authentication,eve,Python,Authentication,Eve,我正在使用Eve框架,并尝试使用用户限制的资源访问,如中所述: 我在做一些事情,比如: class CustomAuth(TokenAuth): def check_auth(self, token, allowed_roles, resource, method): # Get user as an instance of UserResource. if user and hasattr(user, 'id'): self.s

我正在使用Eve框架,并尝试使用用户限制的资源访问,如中所述:

我在做一些事情,比如:

class CustomAuth(TokenAuth):
    def check_auth(self, token, allowed_roles, resource, method):
        # Get user as an instance of UserResource.
        if user and hasattr(user, 'id'):
            self.set_request_auth_value(user['id'])
        request.authenticated_user = user
        ...
因此,我这边有几个问题:

  • 使用受用户限制的资源访问是否足够
  • 此字段如何添加到用户创建的对象中
  • 在我的用户创建的对象中,此附加字段是否称为
    id
    ?可以给它重命名吗
  • 据我所知,它的名称应该与在用户资源中调用的名称相同。这是真的吗
  • 此字段(属性)是否仅适用于新创建的对象?当前用户是否可以通过这种方式获取以前创建的对象
好吧,我想知道我的问题的答案+澄清如何使用它

在我的钩子中以某种方式提取它是一种预期的方式吗

user_id = current_app.auth.get_request_auth_value()
current_app.data.driver.session.query(resource).find({'id': user_id})
是否需要来自hook的这段代码? 如果我请求的资源有自己的
id
字段,它的行为如何

另外,我正在读一篇帖子:

用户受限访问功能禁止用户访问他们没有创建的记录。set_request_auth_value()方法执行以下操作:

1) 在发出创建记录的POST请求时,它会自动添加一个指定为AUTH_字段的字段(如果您只想对特定资源执行此操作,则会添加AUTH_字段)。例如,如果在settings.py中声明

AUTH_FIELD = "my_auth_field"
然后加上

set_request_auth_value(user['id'])
对于您的身份验证方法,这意味着您的应用程序将创建一个字段“my_auth_field”,该字段的值设置为用户[“id”]是什么。因此,如果您进入Mongo Compass或其他DBMS并手动检查您的记录,您会在其中看到一个“my_auth_字段”

2) 当您访问这些记录时,Eve在GET请求中根据用户[“id”]检查“my_auth_field”值,并且仅显示“my_auth_field”等于用户[“id”]的记录。由于此字段是在您使用Eve创建记录时自动添加的,因此它可以有效地过滤掉特定用户未创建的所有内容


是的,它只适用于新创建的对象。我不确定您所说的“是否足够”的确切含义,但它看起来不像是在您的身份验证类中的任何地方声明了“user”。您可能想查看他们是否将用户受限访问合并到令牌身份验证中。

用户受限访问功能阻止用户访问他们没有创建的记录。set_request_auth_value()方法执行以下操作:

1) 在发出创建记录的POST请求时,它会自动添加一个指定为AUTH_字段的字段(如果您只想对特定资源执行此操作,则会添加AUTH_字段)。例如,如果在settings.py中声明

AUTH_FIELD = "my_auth_field"
然后加上

set_request_auth_value(user['id'])
对于您的身份验证方法,这意味着您的应用程序将创建一个字段“my_auth_field”,该字段的值设置为用户[“id”]是什么。因此,如果您进入Mongo Compass或其他DBMS并手动检查您的记录,您会在其中看到一个“my_auth_字段”

2) 当您访问这些记录时,Eve在GET请求中根据用户[“id”]检查“my_auth_field”值,并且仅显示“my_auth_field”等于用户[“id”]的记录。由于此字段是在您使用Eve创建记录时自动添加的,因此它可以有效地过滤掉特定用户未创建的所有内容


是的,它只适用于新创建的对象。我不确定您所说的“是否足够”的确切含义,但它看起来不像是在您的身份验证类中的任何地方声明了“user”。你可能想看看他们是否将用户限制访问合并到令牌身份验证中。

伙计们,有什么想法吗?伙计们,有什么想法吗?