这是我的Python EVE代码
from eve import Eve
from eve.auth import BasicAuth
class MyBasicAuth(BasicAuth):
def check_auth(self, username, password, allowed_roles, resource,
method):
if resource == 'auth':
user = app.data.driver.db['user']
user = user.find_one({'email': username,'password':password})
if user:
return user
else:
False
else:
return True
app = Eve(auth=MyBasicAuth)
if __name__ == '__main__':
app.run()
成功验证后,我将返回user
对象,但不返回任何内容。我哪里错了。
这是settings.py文件
RESOURCE_METHODS = ['GET', 'POST']
DOMAIN = {
'user': {
'schema': {
'firstname': {
'type': 'string'
},
'lastname': {
'type': 'string'
},
'email': {
'type': 'string'
},
'password': {
'type': 'string'
},
'phone': {
'type': 'string'
}
}
},
'auth': {
'schema': {
'username': {
'type': 'string'
},
'password': {
'type':'string'
}
}
}
}
答案 0 :(得分:1)
身份验证和授权与返回数据无关。您的MyBasicAuth
课程应该只返回True
或False
,以便允许处理或拒绝当前请求。
假设您的客户端正在点击user
端点,它将在以下情况下返回数据:
您的自定义身份验证课程返回True
数据库上的user
集合中包含文档(您未提供datasource
,因此Eve默认为端点作为数据源名称。)
此外,由于您未在域中设置resource == 'auth'
端点,我不确定您为何auth
进行测试。
要抢先一步,您可能需要先检查QuickStart,然后检查Authentication and Authorization,最后检查RESTful Account Management教程。