由于某些原因,我无法让流星教程第11步的最后一部分开始工作。步骤的url在这里:https://www.meteor.com/try/11
最后一步是“为了完成我们的私有任务特性,我们需要向我们的deleteTask和setChecked方法添加检查,以确保只有任务所有者可以删除或删除私有任务:”
当我将代码添加到deleteTask和setChecked方法中时,其他浏览器中的用户仍然可以删除和检查/取消检查不同用户的任务。
这就是我的deleteTask和setChecked函数在修改后的样子。也许我做错了?
deleteTask: function (taskId) {
var task = Tasks.findOne(taskId);
if (task.private && task.owner !== Meteor.userId()) {
// If the task is private, make sure only the owner can delete it
throw new Meteor.Error("not-authorized");
}
Tasks.remove(taskId);
},
setChecked: function (taskId, setChecked) {
var task = Tasks.findOne(taskId);
if (task.private && task.owner !== Meteor.userId()) {
// If the task is private, make sure only the owner can check it off
throw new Meteor.Error("not-authorized");
}
Tasks.update(taskId, { $set: { checked: setChecked} });
},
有什么想法吗?
发布于 2015-04-14 17:19:12
在步骤11中实现的代码阻止其他用户检查/取消检查其他用户的私有任务。
从你的代码:
// If the task is **private**, make sure only the owner can delete it
如果用户是公共,则仍然可以检查/取消检查不同用户的任务。
发布于 2015-06-25 23:41:38
正如alfreema所说,如何防止其他用户删除公共任务。
deleteTask: function (taskId) {
// Inside the deleteTask method
var task = Tasks.findOne(taskId);
if (task.public && task.owner !== Meteor.userId()) {
// If the task is public, make sure only the owner can delete it
throw new Meteor.Error("not-authorized");
}
Tasks.remove(taskId);
},
setChecked: function (taskId, setChecked) {
var task = Tasks.findOne(taskId);
if (task.public && task.owner !== Meteor.userId()) {
// If the task is public, make sure only the owner can check it off
throw new Meteor.Error("not-authorized");
}
Tasks.update(taskId, { $set: { checked: setChecked} });
}
尽管我们像上面一样更新代码,用task.private代替task.public,但是它仍然允许删除任务。
https://stackoverflow.com/questions/29630536
复制相似问题