无法从Python EVE API返回数据

时间:2014-12-28 08:12:39

标签: python api eve

这是我的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'
                }
            }
        }
}

1 个答案:

答案 0 :(得分:1)

身份验证和授权与返回数据无关。您的MyBasicAuth课程应该只返回TrueFalse,以便允许处理或拒绝当前请求。

假设您的客户端正在点击user端点,它将在以下情况下返回数据:

  1. 您的自定义身份验证课程返回True

  2. 数据库上的user集合中包含文档(您未提供datasource,因此Eve默认为端点作为数据源名称。)

  3. 此外,由于您未在域中设置resource == 'auth'端点,我不确定您为何auth进行测试。

    要抢先一步,您可能需要先检查QuickStart,然后检查Authentication and Authorization,最后检查RESTful Account Management教程。