【问题标题】:Changing data in another PFuser object更改另一个 PFuser 对象中的数据
【发布时间】:2014-01-23 11:35:13
【问题描述】:

在我的游戏中,一个用户可以对另一个用户造成伤害,并拿走他们的一些金币。 gold 变量存储在其他用户的 PFUser 对象中。一个用户如何更改存储在其他用户 PFUser 对象中的金币的值?

【问题讨论】:

  • 您找到问题的答案了吗?
  • 不完全是我只是避免了这种情况,通过删除所有可能需要与 PFUser 类之外的其他玩家交互的对象。
  • 这就是我的想法,这就是我必须采取的路线。我想这是可以理解的,但还是很烦人。
  • 嗯这可能是最好的,这样只有玩家自己可以更改的对象才在 PFUser 中。

标签: parse-platform


【解决方案1】:

您无法保存或删除未经身份验证的 PFUser。实现该功能的方法是为公共读/写用户变量设置一个单独的类

来自解析文档 -

用户对象的安全性

PFUser 类默认是安全的。存储在 PFUser 中的数据可以 只能由该用户修改。默认情况下仍然可以读取数据 由任何客户。因此,一些 PFUser 对象经过身份验证,可以 已修改,而其他是只读的。

具体来说,您无法调用任何保存或删除 方法,除非 PFUser 是使用经过身份验证的方法获得的, 比如登录或注册。这确保只有用户可以更改他们的 自己的数据。

【讨论】:

  • 这是正确答案。您甚至不能更改用户的属性,因为它不会保存更改。
【解决方案2】:

最好的解决方案是使用云代码来处理它。从客户端操作未经身份验证的 PFUser 对象会引发一些安全问题。有一个云功能,如:

  Parse.Cloud.define("stealGold", function(request, response) {
    var query = new Parse.Query(Parse.User);
    query.equalTo("objectId", request.params.targetObjectId);
    query.find({useMasterKey : true}).then(function(results) {
    // process the result of the query here
    // Save the user object

    });
  });

您可以在此处的文档中了解它:https://parse.com/docs/data#security-cloudcode

【讨论】:

    【解决方案3】:

    您可以使用来自 PFQuery 的getUserObjectWithId

    【讨论】:

    • 我知道如何获取一个 PFuser 对象,但我不知道如何(或者是否有可能)在不授予某种特殊访问权限的情况下从另一个对象更改一个 PFUser 对象的数据,但我不知道这是怎么做到的。
    • 您是否尝试过通常的引用方式,即 userObj["gold"]?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2018-07-23
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    相关资源
    最近更新 更多