gpt4 book ai didi

python - 存储用户对象时避免使用 db.UserProperty()

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:34 27 4
gpt4 key购买 nike

编辑 08/01/2014

截至这次编辑时间,我意识到主题属性 db.UserProperty() 至少已从 ndb 数据存储中删除。好!


所以...有一个存储电子邮件地址的 db.UserProperty() 模型类按 Unicode 顺序。为什么以及如何与仅存储

的 unicode 字符串不同
users.get_current_user().email() 

在 db.StringProperty() 中可以说吗?

像这样使用它是否安全:

class LocalUser(db.Model):

user_account = db.UserProperty()

my_local_user = LocalUser.all().filter("user_account=", users.get_current_user().get())

编辑

我问这个问题的原因是因为 Google App Engine 的许多示例和一些书籍都使用 db.UserProperty() 作为模型来保存用户实例,稍后当用户返回时他们可以获得数据库。该特定用户的模型实例。

在我看来,这会在您的应用程序的用户验证中打开漏洞。

@RocketDonkey 的回答解释了我的查询的根源,并很好地解释了为什么不存储 db.UserProperty() 用户对象实例来存储用户身份验证。

正确的方法是存储 User 实例的 user_id() 属性,因为它对每个用户都是唯一且固定的。

附言对不起我的英语不好。如果有人可以编辑,将不胜感激。

最佳答案

编辑:如 documentation on User objects 所示:

Both the db and NDB libraries have UserProperty property types so that applications can store user values. However, since these values become invalid when users change email address, most applications have no good use for this feature.

User 实例始终是唯一的并且可以进行比较,但是由于它们在数据存储中表示为唯一的 user_id(始终是唯一的)和用户的电子邮件地址,用户更改他们的电子邮件地址将使比较变得无用(这在文档中也被指出是不存储它的另一个原因)。回到您最初的问题(db.UserProperty 的使用),这似乎表明在大多数情况下,没有正当理由将 User 实例存储在数据存储中(如果我确实遇到了一个原因)。

关于python - 存储用户对象时避免使用 db.UserProperty(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13999106/

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