我正在开发一个应用程序,允许用户保存对象,然后查看来自其他用户near
的对象。我在geopoint
对象上存储Parse.User
,并编写了一个查询,查找当前用户附近的其他用户,然后是属于这些用户的对象:
var user = Parse.User.current();
var innerQuery = new Parse.Query(Parse.User);
innerQuery.near("location", user.get("location"));
innerQuery.notEqualTo("objectId", user.id);
var query = new Parse.Query(MyObject);
query.include(innerQuery);
query.matchesQuery("user", innerQuery);
return query.find()
这很有效。但是,我正在尝试保护用户信息 - 我不希望其他用户能够简单地调用user.get("location")
并获取另一个用户的精确坐标(以及地址)。
我尝试将CLP设置为_User
表以禁止读写,但后来我的查询失败了403(禁止)。
在允许near
查询的同时,有没有办法保护我的地理位置?
答案 0 :(得分:3)
您的内部查询有效,因为默认情况下User类是可公开读取的。缺点是,只要您的班级有find
CLP,您就无法保护放在那里的数据。最简单的解决方案是将您的搜索查询移至Cloud,同时在find
类CLP中禁用User
权限,以保护搜索数据,包括用户的位置。