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

2023-12-09

编辑 2014 年 8 月 1 日

截至本次编辑时,我意识到主题属性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())

EDIT

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

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

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

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

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


Edit:如图所示关于用户对象的文档:

db 和 NDB 库都有 UserProperty 属性类型,因此 应用程序可以存储用户值。然而,由于这些值变成 当用户更改电子邮件地址时无效,大多数应用程序没有 很好地利用这个功能。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

存储用户对象时避免使用 db.UserProperty() 的相关文章

随机推荐

  • EditText 的实时字符计数

    我想知道在 Android 中对编辑文本框进行实时字符计数的最佳方法是什么 我在看this但我似乎无法理解它 为了描述这个问题 我有一个 EditText 我试图将字符限制为 150 个 我可以使用输入过滤器来做到这一点 但是我想在文本框正
  • 如何使用 nuget.core 获取包大小?

    我想知道是否有办法在下载之前知道包的大小 我正在使用 nuget 包来部署组件 并且了解更新的大小将是一个很好的功能 包大小在从服务器返回的响应中返回NuGet图库包源码
  • Pandas 数据框按索引选择行,按名称选择列

    有没有办法在 pandas 数据框中按索引 即整数 选择行并按列名称选择列 我尝试使用 loc 但它返回一个错误 并且我了解 iloc 仅适用于索引 这是数据框 df 的第一行 我愿意选择第一行 名为 Volume 的列并尝试使用 df l
  • 通过历史记录向后移动,跳过具有不同查询字符串的同一页面

    当我刷新页面或使用相同的 URL 重定向到同一页面时 我可以单击带有 window history back 的按钮代码并返回上一页 但是 如果查询字符串已更改 当我尝试返回时 我只会返回同一页面 示例1 page1 html gt pag
  • 如何在 emacs 中关闭 vhdl 模式?

    我现在正在学习 emacs 并尝试编写一个简单的 vhdl 程序进行测试 我可以看到 vhdl 模式可能是一个有趣的功能 但我想知道如何暂时关闭它以及稍后如何重新激活它 使用命令M x 基本模式 那是 按下 并按住 meta键 通常是Alt
  • 访问由文件夹引用添加的 Swift 变量

    事实上 我在这个简单的问题上花了大约 3 个小时 并用 google 搜索了很多 但没有办法 我的问题很简单 我想将一个目录作为 文件夹引用 添加到我的 Swift xCode 项目中 但无法访问它们 我不需要添加然后使用组引用 有什么建议
  • 如何仅由单个用户发布 Facebook 用户墙/页面状态 不为其他用户安装应用程序

    我正在一个网站上工作 如果在该网站上发布了某些内容 我需要将页面链接从该网站发布到特殊的用户墙或页面 这意味着我只需要一个用户来发布该问题 我面临的问题是访问令牌 因为我不想在网站流量前面显示 Facebook 登录页面 它不像在用户墙上共
  • 如何让Maven下载特定依赖项的源代码和javadoc?

    我需要特定的依赖项文档 一些文档和源代码 告诉 Maven 这样做的最佳方法是什么 首先 IntelliJ 应该自动为您下载源代码 尽管有时您可能需要单击 下载源代码 这实际上使用 Maven 来获取源代码和 javadoc 如果您想使用
  • 角度路线开始和路线结束事件

    我如何访问路由开始和路由结束事件 我想在路由和加载数据时显示进度栏 有人能告诉我这是如何工作的吗 如果您更喜欢使用可观察的 import Router NavigationStart from angular router construc
  • 如何从电子表格编写 Google 表单脚本以根据答案转到特定页面?

    我已经成功创建了一个 Google 表单 该表单使用从此处改编的代码从电子表格填充 https www youtube com watch v BYA4URuWw0s 现在我想让表单根据上一个问题的答案转到一个特定的问题 而不失去从电子表格
  • 引起原因:java.net.NoRouteToHostException:没有到主机的路由

    我正在尝试在 openshift 上从 eclipse 部署我的 Jersey 项目 并且在尾部文件中收到此错误Caused by java net NoRouteToHostException No route to host 以前当我有
  • 如何在php中获取会议邀请电子邮件的回复

    我正在向用户的电子邮件发送日历会议邀请 当接收者接受邀请时 它会出现在接收者日历中 但我无法得到回复 有什么方法可以获得回复并在我的网站中使用它 在这种情况下 Google 服务帐户是完美的解决方案 在这种情况下 用户不需要任何 API 详
  • 如何将 Action Listener 设置为 3 个按钮

    我正在尝试制作一个带有三个按钮的秒表 开始 暂停 和 停止 我的老师只教我们如何将动作监听器设置为两个按钮 如何为三个按钮设置动作监听器 这是到目前为止我的编码 JButton startButton new JButton Start J
  • 获取当前进程中 JavaVM* 的所有实例?

    这仅特定于 Windows JNI 是否提供返回所有实例的 APIJavaVM 调用过程 考虑以下场景 将 C dll 注入到java exe过程 现在的问题是 C dll如何定位当前的实例JavaVM 在它运行的进程内 据我所知 所有 J
  • Django DRF ListField 反序列化 GET 查询参数中的 id 列表

    尝试使用 DRF 的 ListField 选项来反序列化查询参数中的值列表 下例中的应用程序 我很难让它发挥作用 在网上找不到示例 希望有人提供一些帮助 api getAppStats applications one two three
  • 如何从 Genymotion android 模拟器访问本地主机?

    我不知道如何从 Genymotion android 模拟器访问本地主机 顺便说一句 我正在使用 MAMP Update genymotion更新到2 2后你可以使用10 0 3 2 ref 另一种方法 要通过 Genymotion 访问本
  • SignalR、JQuery 和 Node

    在我目前正在进行的一个项目中 我们使用 Electron 作为主机 在 Electron 主进程 这是一个普通的 Node 进程 中 我们需要连接到具有 SignalR 端点的下游后端 然而 由于 SignalR 是一个 JQuery 模块
  • 为什么这两个变量 `${ "_<$filename" }` 和 `${ "::_<$filename" }` 不相等?

    这个问题与this one 你说这两个是一样的 lt filename Not allowed under strict lt filename In main package Not allowed under strict 但接下来怎么
  • Firefox 过渡不起作用

    这是我的 CSS 设置 element1 element2 webkit transition left 0 3s moz transition left 0 3s o transition left 0 3s transition lef
  • 存储用户对象时避免使用 db.UserProperty()

    编辑 2014 年 8 月 1 日 截至本次编辑时 我意识到主题属性db UserProperty 至少从 ndb 数据存储中删除 好的 所以 有 db UserProperty 模型类存储电子邮件地址 按 Unicode 顺序 它与仅存储