n1m*_*mmy 33
虽然还没有记录的方法可以做到这一点,但这里有一些代码可以做你想要的:
Foo = new Meteor.Collection("foo");
...
if (Meteor.is_server) {
Meteor.startup(function () {
Meteor.default_server.method_handlers['/foo/insert'] = function () {};
Meteor.default_server.method_handlers['/foo/update'] = function () {};
Meteor.default_server.method_handlers['/foo/remove'] = function () {};
});
}
Run Code Online (Sandbox Code Playgroud)
这将禁用默认的插入/更新/删除方法.客户端可以尝试插入数据库,但服务器将不执行任何操作,客户端将在服务器响应时注意并删除本地创建的项目.
insert/update/remove仍然可以在服务器上运行.您需要使用在服务器上运行的Meteor.methods来创建方法以完成任何数据库写入.
当认证分支到达时,所有这些都将改变.一旦发生这种情况,您将能够提供验证器来检查和授权服务器上的数据库写入.这里有更多细节:http://news.ycombinator.com/item?id = 3825063
小智 21
[更新] 现在有一个官方和记录的Auth包,它提供了不同的解决方案来保护集合.
在CRUD级别:
[Server] collection.allow(options)和collection.deny(options).限制此集合上的默认写入方法.一旦在集合上调用了其中任何一个,就会限制该集合上的所有写入方法,而不管不安全的包.
并且还要insecure
从客户端删除完全写入访问权限.
来源:Auth入门(感谢@ dan-dascalescu)
[旧答案]
显然,正在使用Auth Package(?),应该避免任何用户像现在一样完全控制db.还有人建议通过定义自己的突变(方法)来确定现有解决方案(解决方法),如果他们试图执行未经授权的操作,则会使其失败.我没有得到它要好得多,但我认为这常常是必要的,因为我怀疑AUTH包将让你实现通常的权威性逻辑上的一行水平,但可能只在CRUD方法.将不得不看看开发者有什么话要说.
[编辑]发现似乎证实了我的想法:
目前,客户端具有对集合的完全写入权限.他们可以执行任意Mongo更新命令.构建身份验证后,您将能够限制客户端对插入,更新和删除的直接访问.我们还在考虑验证器和其他类似ORM的功能.
这个答案的来源:
更简洁的方式:
_.each(['collection1', 'collection2'], function(collection){
_.each(['insert','update', 'remove'], function(method){
Meteor.default_server.method_handlers['/' + collection + '/' + method] = function(){}
});
});
Run Code Online (Sandbox Code Playgroud)
或者使它更具惯用性:
延伸流星:
_.extend(Meteor.Collection.prototype, {
remove_client_access: function(methods){
var self = this;
if(!methods) methods = ['insert','update','remove'];
if(typeof methods === 'String') methods = [methods];
_.each(methods, function(method){
Meteor.default_server.method_handlers[self._prefix + method] = function(){}
});
}
});
Run Code Online (Sandbox Code Playgroud)
通话更简单:
List.remove_client_access() // restrict all
List.remove_client_access('remove') //restrict one
List.remove_client_access(['remove','update']) //restrict more than one
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9990 次 |
最近记录: |