使用 JS SDK 在 Parse Server 中查询类的权限被拒绝

Posted

技术标签:

【中文标题】使用 JS SDK 在 Parse Server 中查询类的权限被拒绝【英文标题】:Permission denied to query class in the Parse Server with JS SDK 【发布时间】:2020-06-09 15:17:04 【问题描述】:

我使用 Parse Dashboard 在我的 Parse Server 中创建了一个类,然后我将 Class Level Permissions 更改为只允许一个用户对该类的文档进行读写操作:

应该有权访问此类的用户也是通过 Parse Dashboard 手动创建的,如下所示:

但是,当我尝试从这个类中查询文档时,特别是使用这个用户,我不断收到错误消息“Permission denied for action find on class Person”。这就是我的代码登录和查询类的样子:

const Person = Parse.Object.extend('Person')
Parse.Object.registerSubclass('Person', Person)

Parse.User.logIn('username', 'password').then(user => 
    console.log('E-mail: ' + user.getEmail())
    console.log('Created: ' + user.createdAt)
    console.log('Current: ' + user.isCurrent())
    console.log('Authenticated: ' + user.authenticated())

    const query = new Parse.Query(Person)
    query.equalTo('name', 'John')
    return query.find()
)

我添加了一堆console.log 来检查正在打印的用户信息,我确认登录似乎成功完成,因为字段emailcreatedAt 与我在中看到的信息相匹配解析仪表板。但是,authenticatedcurrent 字段都返回false,但我不知道为什么。我期待他们返回true

这是应用程序中我尝试登录 Parse Server 并执行仅限一个用户的操作的唯一位置。知道为什么我会收到此“Permission denied for action find on class Person”错误吗?

【问题讨论】:

【参考方案1】:

我猜这与安全有关。通常 Parse 不允许用户获取有关任何其他用户的数据,除非您执行某些操作 - 例如- 从仪表板允许它。但无论如何我想你必须一件一件地去做。

【讨论】:

以上是关于使用 JS SDK 在 Parse Server 中查询类的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Parse-JS-SDK,matchesKeyInQuery 不适用于 objectId。

解析云代码迁移后如何更新到最新版本的 Parse-SDK-JS

如何使用 PHP Parse SDK 连接到 mongodb Parse-Server?

Flutter/dart:Parse Server sdk:ParseUser.currentUser() 函数在重置时返回 null

如何使用 php parse-server sdk 将 ParseQuery::orQueries 与 matchQuery 结合起来

Flutter parse-server sdk 无法删除对象