按照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
域中定义的身份验证方法?
如果我错了,如何在自定义端点中使用自定义身份验证类?
谢谢!