Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 备份和用户模型与注册用户_Angularjs_Authentication_Ionic Framework_Backand - Fatal编程技术网

Angularjs 备份和用户模型与注册用户

Angularjs 备份和用户模型与注册用户,angularjs,authentication,ionic-framework,backand,Angularjs,Authentication,Ionic Framework,Backand,我需要指定firstName、lastName和email之外的其他字段,这些字段似乎是我回拨应用程序中的and.user.getUserDetails()时返回给我的所有字段,尽管在模型中指定了其他字段。因此,它似乎是从“注册用户”模式中提取这些信息,而不是从“用户”模式中提取 我还希望能够允许用户更新这些字段。但我当然不希望用户能够更新其他人的字段,这就是在角色为“user”的任何模型项上运行更新似乎能够做到的 要实现这一点,我需要添加很多服务器端功能吗?或者我的方法是错误的-真的会假设回来

我需要指定firstName、lastName和email之外的其他字段,这些字段似乎是我回拨应用程序中的and.user.getUserDetails()时返回给我的所有字段,尽管在模型中指定了其他字段。因此,它似乎是从“注册用户”模式中提取这些信息,而不是从“用户”模式中提取

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


要实现这一点,我需要添加很多服务器端功能吗?或者我的方法是错误的-真的会假设回来,并且会开箱即用吗?

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

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

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

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

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

  • 完全在客户端的应用程序代码中实现保护。这使您在如何防止未经授权的用户进行更新方面具有最大的灵活性
  • 当为具有非管理员角色的用户检索对象时,可以使用预定义的筛选器来筛选对象。它可从对象->对象名称下的
    安全性
    选项卡获得。那里有一些关于如何开始的文档,但是最相关的部分是顶部的“向导”组件-默认代码应该做一些与您所寻找的非常接近的事情
  • 对每个相关数据库操作(创建、更新、删除)使用自定义操作,以防止不拥有正在使用的对象的用户进行更新
  • 每种方法都有其积极和消极之处。第一种方法将应用程序的逻辑保持在手边,但无法防止恶意实体更改通过SDK的web请求发送到后台的参数。第二种方法可行,但在全球范围内应用的方式可能与您的应用程序体系结构不兼容。第三种方法是最好的折衷方案,但增加了在多个位置管理同一代码的复杂性。有一些策略可以解决这个问题,但正确的答案将在很大程度上取决于您的特定应用程序的功能和特性