【问题标题】:Error when creating ACL in Cloud Code: invalid permission type在 Cloud Code 中创建 ACL 时出错:权限类型无效
【发布时间】:2019-04-22 12:05:19
【问题描述】:

TL;DR

设置具有角色权限的 ACL有时会失败,因为角色的名称被解释为权限类型。


设置

在 Cloud Code 函数中,我创建了一个 ACL 对象并使用 setRoleReadAccess 授予角色读取权限:

const roleName = 'foo'; // this string is actualy calculated, but always non-nil and non-empty
const acl = new Parse.ACL();
acl.setRoleReadAccess(roleName, true);

然后我将该 ACL 设置为一个新的(未保存的)对象:

const myObject = new MyObject()
myObject.setACL(acl);

错误

setACL 调用导致异常并显示错误消息 Tried to create an ACL with an invalid permission type.,这看起来很奇怪,因为我没有提供自定义权限类型。

到目前为止我尝试了什么

  • 我尝试将角色设置为 Role 对象而不是字符串,但这并没有什么不同。
  • 经过一些调试,我发现错误源自 ParseACL.js(第 85 行),其中permission 字符串必须匹配readwrite;但是,在我的情况下,该字符串与角色名称匹配(在上面的示例中为 "foo")。

我的应用程序的其他部分有类似的 ACL/角色代码,所以我确信这应该有效。现在我正在寻找提示——什么可能导致角色名称被解释为权限类型的奇怪行为——以及如何进一步调试此问题的提示。

(使用 parse-server 版本 2.3.3 和 node.js 6.4.0;我目前锁定到该 Parse 版本。)

【问题讨论】:

    标签: parse-platform parse-server


    【解决方案1】:

    该问题是由全局 Mocha 测试设置文件中包含 global.Parse = require('parse/node') 引起的;在运行所有集成测试(> 300 个测试,大约需要 4 分钟)时,这会导致一些奇怪的效果,例如提到的Tried to create an ACL with an invalid permission type,还有You cannot use [object Object] as a query parameter;这两个错误仅在运行时负载过重并运行所有测试时发生 - 仅运行一个测试不会产生任何错误。

    详情在此Github issue

    【讨论】:

      猜你喜欢
      • 2013-04-17
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      相关资源
      最近更新 更多