此Meteor应用已删除不安全和自动发布,并添加了帐户密码
它使用Accounts.createUser({username: someName, password: somePwrd});
它避免使用允许/拒绝,而是使用Meteor.call来插入文档,因为在docs中读取,它表示
服务器代码是受信任的,不受允许和拒绝限制。这包括使用Meteor.call调用的方法 - 它们应该进行自己的访问检查,而不是依赖于允许和拒绝。
但是当我启动Meteor.logout()
时,我仍然可以向Tasks1集合插入新文档。怎么可能?我虽然注销将停止插入任何新文件。我该如何解决?感谢
///////////////////////////
//both/both.js
///////////////////////////
Tasks1 = new Mongo.Collection('tasks1');
///////////////////////////
//server/server.js
///////////////////////////
Meteor.publish('tasks1', function(){
return Tasks1.find({userId: this.userId});
});
Meteor.methods({
addTasks1: function (doc) {
Tasks1.insert(doc);
}
});
///////////////////////////
//client/client.js
///////////////////////////
Template.footer.events({
'click button': function () {
if ( this.text === "SUBMIT" ) {
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
var params = {};
params[inputs[i].name] = inputs[i].value;
Meteor.call('addTasks1', params);
}
}
}
});
Template.mainMenu.events({
'click #logout': function () {
Meteor.logout();
}
});
答案 0 :(得分:1)
在您的服务器addTasks1
方法中,您应首先检查用户是否是这样的用户:
Meteor.methods({
addTasks1: function(doc) {
if (!Meteor.userId()) {
throw new Meteor.Error("Not Authorized");
} else {
Tasks1.insert(doc);
}
}
})
单独退出并不能阻止用户插入。您必须编辑方法代码才能实现此目的。
答案 1 :(得分:0)
addTasks1: function (doc) {
if (Meteor.userId()) {
Tasks1.insert(doc);
}
}