gpt4 book ai didi

python - 使用联合登录时保存用户设置

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:42 25 4
gpt4 key购买 nike

我需要在我的应用程序中为每个用户保存设置。

我试图将用户用作我的设置对象的父级,但我不能这样做,因为用户没有 key 。然后我在我的设置对象中创建了一个实例,它引用了用户属性,但在文档中它说如果用户更改他们的电子邮件地址,UserProperty 是不稳定的。然后我决定将 user_id 保存在 StringProperty() 中,但如果用户使用 OpenId 登录,则 user_id 元素为 None。

有没有一种方法可以将用户设置绑定(bind)到适用于 google 帐户和 open_id 帐户的用户对象?

最佳答案

您不能在 google 帐户/open_id 帐户周围添加一个包装器类,以便您可以使用父关系吗?类似于以下内容:

UserWrapper(db.Model):
user = db.UserProperty()

UserSettings(db.Model):
...

# New User
user = users.get_current_user()
new_user_settings = UserSettings(...)
new_user_wrapper = UserWrapper(key=user.nickname(),
parent=new_user_settings,
user=user)

# Login Existing User
user = users.get_current_user()
user_wrapper = UserWrapper.get_by_key_name(user.nickname())
user_settings = user_wrapper.parent()

如果用户想要更改他们的电子邮件地址,请使用旧电子邮件查找 UserSettings,删除关联的 UserWrapper,为新电子邮件地址创建一个新的 UserWrapper 并与旧的 UserSettings 关联。

请注意,我已将 UserSettings 设置为 UserWrapper 的父级,以防将多个电子邮件地址与同一帐户相关联。

关于python - 使用联合登录时保存用户设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11514569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com