5

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

4

3 回答 3

10

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

从解析文档 -

用户对象的安全性

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

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

于 2013-05-22T15:48:48.720 回答
4

最好的解决方案是使用云代码来处理它。从客户端操作未经身份验证的 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

于 2014-01-23T03:35:13.077 回答
0

您可以使用PFQuery 中的getUserObjectWithId

于 2013-05-02T18:40:31.617 回答