使用webapp2时,创建新用户时,只需使用auth_id设置一个简单的entity.put(),而不需要设置自定义实体键。但是,如果您尝试通过授权令牌来检索用户,它会假定(Kind,auth_id)的实体由于其密钥设置为(Kind,id)而变为空。我错过了什么吗?为什么get_by_auth_token中假定的密钥是Kind,auth_id? create_user做到这一点:使用错误实体键的Webapp2 get_by_auth_token
ok, existing = cls.unique_model.create_multi(k for k, v in uniques)
if ok:
user.put()
但get_by_auth_token做到这一点:
token_key = cls.token_model.get_key(user_id, 'auth', token)
user_key = model.Key(cls, user_id)
valid_token, user = model.get_multi([token_key, user_key])
好像这是没有得到太多的活动,但是为了以防万一有人碰到这个错误运行。
create_user未设置默认设置ID的密钥。我扩展了用户模型并覆盖了create_user类方法,以将实体关键字设置为auth_id。您需要重写add_auth_id以将密钥更新为新的auth_id。
user_values['auth_ids'] = [auth_id]
user_key = model.Key(cls, auth_id)
user = cls(key=user_key, **user_values)
如果可以的话,我会赞成这两次,感谢您提出问题并找到答案。这已经破坏了我的头!!!!!!有没有机会分享一些更多的create_user方法,以便我知道要在我的内容中包含哪些内容? – ColinMasters 2014-12-02 16:33:15