我正在尝试使用谷歌应用引擎运行自己的身份验证,并使用this question:中的代码
我在我的端点服务器类中编写了一个方法,如下所示:
@classmethod
def get_user_from_headers(cls):
try:
user_id = cls.request_state.headers['user-id']
api_token = cls.request_state.headers['api-token']
user = ndb.Key(User, int(user_id)).get()
if user.apiToken != api_token:
raise endpoints.UnauthorizedException('Api Token error')
return user
except:
raise endpoints.UnauthorizedException('no user found')
别处:
@endpoints.method(containers.AddMemberToEventContainer, messages.EventsMessage, path='events/{event_id}',
http_method='POST', name='add.member.to.event')
def add_member_to_event(self, req):
user = self.get_user_from_headers()
用户类只是扩展了ndb.Model,即User(ndb.Model)
但是当我返回用户时,python发出一条错误,指出用户不能用user = self.get_user_from_headers()
行来调用在get headers方法的内部,我在返回用户之前尝试了日志记录,并按预期显示在日志中。如何将用户从此方法传回到端点方法?
编辑: 这是实际的错误:
TypeError: 'User' object is not callable
答案 0 :(得分:0)
我不知道这是否是正确的方法,但我创建了一个Callable Model类并扩展了:
class CallableModel(ndb.Model)
def __call__(self):
return self
现在它有效....