2015-04-14 1 views
0

По какой-то причине я не могу получить последнюю часть шага 11 учебника «Метеор» для работы. Ссылка на этот шаг приведена здесь: https://www.meteor.com/try/11Учебник Метеор Шаг 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} }); 
}, 

Любые мысли?

+0

Хм, я забыл о примерах кода в нижней части каждого урока. Когда я их открываю, эти методы выглядят так же, как мои. Тупик. – alfreema

ответ

1

Код, реализованный на шаге 11, запрещает другим пользователям проверять/снимать отметку с других пользователей личных задач.

Из кода:

// If the task is **private**, make sure only the owner can delete it 

Пользователи по-прежнему могут проверить/задач снимите флажок различных пользователей, если они общественности.

Отъезд thiswill.meteor.com для примера того, что пользователи могут и не могут сделать, когда приложение будет завершено.

+0

Бинго! Теперь я понимаю. :) Я бы хотел, чтобы их учебник не делал это только частным - таким образом мы могли видеть, что шаговая работа (частные из них удаляются у не-владельцев). Очевидно, теперь, когда вы объяснили это, я могу изменить его, чтобы удалить частное требование, но я думаю, что было бы более образованным, если бы я это ожидал. – alfreema

+0

:). Если вы не делали шаг 11, люди могли бы использовать консоль javascript и удалять чужие частные люди. Я думаю, что их цель - показать вам, как дать пользователю правильное представление и редактировать свои личные данные. С небольшим взломом я уверен, что вы можете превратить «частную задачу» в «заблокированную задачу». И у этого было бы поведение, которое вы хотели бы видеть. :) – Will

+0

Ну, я ничего не изменил бы о шаге 11, кроме того, чтобы сделать это, когда флажки и удаление недоступны, если вы не владеете ими. Это более естественное ожидание, когда вы имеете дело с безопасностью. То, как это происходит, когда кто-то делает это «частным», он полностью исчезает на экране другого человека - поэтому нет возможности проверить функциональность того, что они пытаются продемонстрировать (что является безопасностью). – alfreema

0

Как говорится в 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, принимая во внимание, что по-прежнему позволяет удалять задачи.

 Смежные вопросы

  • Нет связанных вопросов^_^