Mat*_*att 8 javascript node.js backbone.js parse-platform marionette
在Parse中管理实体时,我需要将许多对象绑定到当前登录的用户.
我担心的是:
User
传入的是当前登录用户.他们有这个例子TODO的应用程序,其在文档显示没有云代码到位,以确保User
将Todo
被分配给在当前登录的用户.
现在我查看代码,我开始认为无论何时保存对象,它都会绑定到用户.任何人都可以解释为什么这个应用程序的工作原理以及它如何与Todo
s 关联User
?
更新:没关系,我在他们的代码中找到了他们指定要为Todo保存的用户的位置.我的问题是,是什么阻止用户编写代码来保存todo与其他人的用户ID?
this.todos.create({
content: this.input.val(),
order: this.todos.nextOrder(),
done: false,
user: Parse.User.current(),
ACL: new Parse.ACL(Parse.User.current())
});
Run Code Online (Sandbox Code Playgroud)
更新#2:如果User
对象的ACL
设置只允许用户能够读取User
他们拥有的对象,那么他们将无法查询以获取另一个用户对象.但是,还有两个可能的问题:
User
对象,即使s表user
上的字段Todo
需要_User
?如果有人能够确认或提供任何有用的解决方案.要立即尝试测试#1.
更新#3 - 经过一些测试:
user
上的字段Todo
需要一个_User
对象,则不会将objectId作为字符串.然而,他们可以创建一个新的用户对象,并在那里设置objectId来解决这个问题.
var user = new Parse.User(); // Create user object
user.id = "cqmEuj1Bzf"; // Assign user id
// Create and save Todo
var td = new Todo();
td.set("name", "Some ting todo");
td.set("user", user);
td.save();
Run Code Online (Sandbox Code Playgroud)这就是我所担心的.我能够成功地将Todo保存到另一个用户的帐户 - 只要我知道他们的user_id(objectId
).有了足够的用户,他们可能会猜到至少有一个用户随意搞砸某个人的帐户.
所以现在怎么办?
答案:使用Cloud Code验证传入的用户是否与当前用户匹配.答案发布在Parse的论坛上.
您可以使用云代码来验证传入的用户是否与当前用户匹配。该答案已发布在Parse 的论坛上。
您可以使用 Cloud Code 确保 objectId 与发出此请求的当前用户相对应。事实上,我们的示例应用程序 Anypic 对“Photo”和“Activity”类进行了此检查。
来自 Anypic 的云代码:
Parse.Cloud.beforeSave('Activity', function(request, response) { var currentUser = Parse.User.current(); var objectUser = request.object.get('fromUser');
if(!currentUser || !objectUser) {
response.error('An Activity should have a valid fromUser.'); } else if (currentUser.id === objectUser.id) {
response.success(); } else {
response.error('Cannot set fromUser on Activity to a user other than the current user.'); } });
Parse.Cloud.beforeSave('Photo', function(request, response) { var currentUser = Parse.User.current(); var objectUser = request.object.get('user');
if(!currentUser || !objectUser) {
response.error('A Photo should have a valid user.'); } else if (currentUser.id === objectUser.id) {
response.success(); } else {
response.error('Cannot set user on Photo to a user other than the current user.'); } });
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1822 次 |
最近记录: |