后退和用户模型与注册用户



我需要指定除firstName,lastName和email之外的其他字段,当我在我的应用程序中调用Backand.user.getUserDetails()时,这些字段似乎是返回给我的全部字段,尽管在模型中指定了更多字段。所以它似乎将这些从"注册用户"中拉出来,而不是"用户"模型?

我还希望能够允许用户更新这些字段。但是,当然,我不希望用户能够更新其他人的字段,这就是对角色为"User"的任何模型项运行UPDATE似乎能够做到的。

我需要添加很多服务器端功能来实现这一点,还是我在这里的方法错误 - 真的会假设 Backand 会开箱即用?

这里似乎有几个问题,所以让我尽力解决所有这些问题。Backand中有两种类型的用户对象 -registered_users,它由授予使用Backand应用程序权限的身份验证实体组成,users,它是Backand应用程序中的数据库对象,就像任何其他对象一样。registered_users表仅用于管理与身份验证和向用户分配安全角色相关的详细信息 - 特定于应用的数据应存储在数据模型的users对象中。

Backand平台使用安全操作来尝试维护这两个表之间的链接。这意味着(如果您尚未修改默认操作)平台将在用户注册时在users对象中创建新条目,在从应用中删除该用户时从users对象中删除该用户,并将尝试将收到的任何更新推送到users对象。虽然无法修改registered_users对象以添加或删除字段,但可以提供操作将用于填充 Users 对象的参数哈希。此参数具有相当简单的"column": "value"格式,其中column是应用的自定义用户对象中列的名称,value是您希望插入到该列中的值。有关更多详细信息,请参阅 http://docs.backand.com/#signup

请注意,如果字段不存在,或者标记为必填但未提供,则调用将失败并在usersregistered_users之间产生差异。

我们的目标之一是尽可能少地对开发人员施加限制 - 我们上面的方法表明了这一点。我们必须处理许多不同的潜在用例,并非所有用例都通过与users对象的更深层次集成而有所帮助 - 这样做会使users对象成为必需的组件,从而影响应用程序的架构和结构。然后,围绕用户对象的所有权添加安全限制只会增加隐藏的复杂性 - 虽然这对您的应用程序是必需的,但并非每个应用程序都需要。

回复:将编辑限制为仅用户拥有的对象,您可以在 Backand 中采用几种方法来实现这一点:

  1. 完全在客户端的应用代码中实现保护。这为您提供了最大的灵活性,可以防止未经授权的用户进行更新。
  2. 您可以使用预定义筛选器在为具有非管理员角色的用户检索对象时筛选对象。它可从"对象"-> object_name下的"Security"选项卡中获得。那里有一些关于如何开始的文档,但最相关的部分是顶部的"向导"组件 - 默认代码应该做一些非常接近你正在寻找的东西
  3. 对每个相关的数据库操作(创建、更新、删除)使用自定义操作,以防止不拥有他们正在使用的对象的用户进行更新。

每种方法都有其优点和缺点。第一种方法使应用的逻辑近在咫尺,但不能防止恶意实体更改通过 SDK 的 Web 请求发送到 Backand 的参数。第二种方法可以工作,但将以可能与您的应用程序体系结构不兼容的方式全局应用。第三种方法是最好的折衷方案,但增加了在多个位置管理相同代码的复杂性。有一些策略可以解决这个问题,但正确的答案在很大程度上取决于您特定应用程序的功能和特性。

最新更新