如何防止从JavaScript控制台调用'Meteor.call'?

Tee*_*sej 6 javascript meteor meteor-methods

我只是注意到,Meteor.call阻止用户调用集合的插入,更新,删除方法的概念仍然可以从JavaScript控制台调用.

对于客户的例子:

// client
...

Meteor.call('insertProduct', productInfo);

...
Run Code Online (Sandbox Code Playgroud)

这是服务器部分:

// server
Meteor.methods({
    insertProduct: function( productInfo ){
       Product.insert(...);
    }
})
Run Code Online (Sandbox Code Playgroud)

好的,我知道人们不能直接从他们的JavaScript控制台调用Product.insert().

但是如果他们再多尝试一下,他们会发现Meteor.call()客户端的JavaScript来自Developer工具的资源选项卡.

所以现在他们可以尝试Meteor.call从他们的控制台调用,然后尝试猜测应该是什么productInfo属性.

所以我想知道我们怎么能阻止这个最后的活动呢?是否Meteor.call做的工作不够好?或者我错过了一些重要的事情?

Ste*_*ods 2

Meteor.call 是一个全局函数,就像window.alert(). 不幸的是,您无法阻止用户调用 Meteor.call。但是,您可以验证数据架构和用户发送的实际数据。我建议使用https://github.com/aldeed/meteor-simple-schema(aldeed:simple-schema作为meteor包名称)以确保您不会在项目中获得垃圾数据。