我们如何在自定义端点上使用python-eve @requires_auth装饰器?

时间:2018-08-17 09:39:19

标签: python eve

按照Nicola https://nicolaiarocci.com/building-custom-endpoint-handlers-with-eve/中有关require_auth装饰器的示例,我无法使其按预期工作,并且需要一些帮助。

从本质上讲,它似乎适用于默认的身份验证方法,但我需要它与我的自定义身份验证类一起使用。

settings.py中,我定义了一个资源。

my = {
    'schema': {
        'test': {
            'type': 'string',
        },
    },
    'authentication': clientAuth,
    'resource_methods': ['GET', 'POST'],
}

DOMAIN = {
            'my': my,
          }

然后我像这样定义clientAuth类。

class clientAuth(TokenAuth):
    def check_auth(self, token, allowed_roles, resource, method):
        clients = app.data.driver.db['clients']
        lookup = {'token': token}
        if allowed_roles:
            lookup['roles'] = {'$in': allowed_roles}
        client = clients.find_one(lookup)
        if client:

            slug = client['slug']
            add_db_to_config(app, slug)
            self.set_mongo_prefix(slug)
        return client

我的自定义端点看起来像这样。

@app.route('/test')
@requires_auth("my")
def my():
    # stuff

我希望(可能是错误地)my装饰器中的参数requires_auth应该使用my域中定义的身份验证方法?

如果我错了,如何在自定义端点中使用自定义身份验证类?

谢谢!

请参见How to protect custom endpoints using BasicAuth?

https://github.com/pyeve/eve/issues/860

0 个答案:

没有答案