您能否告诉我如何将此修补程序应用于谷歌应用引擎,如何放置它?谢谢
def _user_init(self, email=None, _auth_domain=None,
_user_id=None, federated_identity=None, federated_provider=None):
if not _auth_domain:
_auth_domain = os.environ.get('AUTH_DOMAIN')
assert _auth_domain
if email is None and federated_identity is None:
email = os.environ.get('USER_EMAIL', email)
_user_id = os.environ.get('USER_ID', _user_id)
federated_identity = os.environ.get('FEDERATED_IDENTITY',
federated_identity)
federated_provider = os.environ.get('FEDERATED_PROVIDER',
federated_provider)
if not email and not federated_identity:
raise UserNotFoundError
self.__email = email
self.__federated_identity = federated_identity
self.__federated_provider = federated_provider
self.__auth_domain = _auth_domain
self.__user_id = _user_id or None
users.User.__init__ = _user_init
答案 0 :(得分:2)
按原样使用:在使用相关用户模块或数据存储功能之前,将该代码放入导入的模块中。我在相关行中添加了补丁代码(最后一行)和补丁本身。
答案 1 :(得分:1)
我认为,这属于一些应用程序作为appengine sdk中的grep,因为'federated_identity'不会产生任何线索。顺便说一句,你应该这样做。 Grep(或WinGrep)用于“联合”之类的术语,以查看此部分补丁是否可以应用于任何源。
感谢您更新的链接。该补丁可以添加到文件google/appengine/api/users.py
您可能只需要添加最后一行:users.User.__init__ = _user_init
在检查svn中的最新代码后,我可以解决这个问题。
答案 2 :(得分:1)
像这样覆盖构造函数是不安全的。如果用户API的内部实现在生产中发生变化,您的应用程序可能会在没有警告的情况下中断。
你想在这里完成什么?我没有看到任何自定义逻辑;看起来你刚刚从SDK中逐字复制了构造函数。如果您需要添加自定义逻辑,请尝试继承UserProperty和/或包装用户API调用。