资讯专栏INFORMATION COLUMN

Meteor:方法控制

seal_de / 3246人阅读

摘要:通过这种方式我们可以用权限验证的方式对于用户端提交的行为判断,确定用户的提交形式是符合我们的要求的。同样的我们需要增加和方法。这种工作方式的原理类似与,客户端发送请求到服务器端,服务器更新,通知客户端,客户端正确的显示数据。

在之前的例子中,我都是使用的很小的demo,所有的测试都可以在客户端直接对database进行CURD.实际的项目中有可以需要对于用户操作databse有一定的权限控制,在meteor中,最好的方法是通过自定义方法(call method)的形式,代替用户端直接进行,insert,update和remove。通过这种方式我们可以用权限验证的方式对于用户端提交的行为判断,确定用户的提交形式是符合我们的要求的。

移除 insecure

每个meteor创建的项目,默认是 insecure的 ,默认是允许用户在客户端是可以更改database的,现在需要移除insecure

meteor remove insecure

Changes to your project"s package version selections:

insecure  removed from your project

insecure: removed dependency

insecure成功移除,移除之后我们在Meteor.isClient中的insert,update,remove都无法使用了,因为不开启insecure的应用不能在客户端直接更新database的数据,需要使用下面的方法才可以更新database。

定义方法

我们定义方法让客户端代码可以操作数据库,Meteor.methods用来定义方法的,他定义的方法可以不需要在client或者server里面,两边都可以访问!

Meteor.methods({
    addLanguage: function (text) {
        //   auth
        //if (!Meteor.userId()) {
        //    throw new Meteor.Error("need login");
        //}

        Languages.insert({
            name: text,
            createdAt: new Date()
        });


    }
});

再对update 和remove操作增加定义的方法:

updateLanguage: function (_id) {
        Languages.update(_id, {
            $set: {updateAt: new Date()}
        })

    },
    removeLanguage: function (_id) {
        Languages.remove(_id);
    }
调用 Meteor.Methods

调用已经定义的Meteor需要使用:Meteor.call

  Template.body.events({
        "submit .new-language": function (event) {
            event.preventDefault();
            var text = event.target.text.value;
            Meteor.call("addLanguage", text);

        }
    });

Meteor.call的第一个参数是函数名字,第二个参数是需要传的变量。同样的我们需要增加update和delete方法。

现在insert,update和delete又可以正常的在工作了。
这种工作方式的原理类似与ajax,客户端发送请求到服务器端,服务器更新database,通知客户端,客户端正确的显示数据。

项目地址:https://github.com/jjz/meteor/tree/master/meteor-security

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78615.html

相关文章

  • Meteor:方法控制

    摘要:通过这种方式我们可以用权限验证的方式对于用户端提交的行为判断,确定用户的提交形式是符合我们的要求的。同样的我们需要增加和方法。这种工作方式的原理类似与,客户端发送请求到服务器端,服务器更新,通知客户端,客户端正确的显示数据。 在之前的例子中,我都是使用的很小的demo,所有的测试都可以在客户端直接对database进行CURD.实际的项目中有可以需要对于用户操作databse有一定的权...

    CKJOKER 评论0 收藏0
  • Meteor:发布与订阅

    摘要:发布与订阅在端使用函数注册一个的发布者,需要在客户端对进行订阅,使用订阅了现在已经添加的数据就会重新出现在页面上。利用发布订阅模式,我们也可以实现对于私有数据的访问。 我们可以使用安全的方法让用户端不直接操作数据库,但是还是可以直接读取数据库内容,如果我们还需要保护私有的数据存储,在客户端直接使用Collection.find(),这样的操作方式在实际的项目中并不会使用,这样的数据无法...

    animabear 评论0 收藏0
  • Meteor:发布与订阅

    摘要:发布与订阅在端使用函数注册一个的发布者,需要在客户端对进行订阅,使用订阅了现在已经添加的数据就会重新出现在页面上。利用发布订阅模式,我们也可以实现对于私有数据的访问。 我们可以使用安全的方法让用户端不直接操作数据库,但是还是可以直接读取数据库内容,如果我们还需要保护私有的数据存储,在客户端直接使用Collection.find(),这样的操作方式在实际的项目中并不会使用,这样的数据无法...

    leone 评论0 收藏0
  • 翻译 Meteor React 制作 Todos - 11 - 发布订阅

    摘要:通过发布订阅模式过滤数据现在我们已经把应用中比较敏感的代码放到了一些方法里面,我们还需要学习安全故事的另一半内容了。当在客户端被调用时传入发布器名称,客户端将会从发布器订阅所有的数据。这个按钮应该只是给任务的所有者来显示。 通过发布订阅模式过滤数据 现在我们已经把应用中比较敏感的代码放到了一些方法里面,我们还需要学习Meteor安全故事的另一半内容了。到现在为止,我们一直是假设整个整个...

    用户83 评论0 收藏0
  • Meteor的模板

    摘要:在文件中使用模板模板定义三个最高级别的标签不用写了,能省则省的模板可以自由的使用标签比如上面的使用的标签。在模板中使用逻辑是模板语言,是安全的不会输出标签他具有以下常用的语法导入指定的模板循环判断等详细的说明可以参考。 新建一个项目Meteor meteor create meteor-template 会生成三个文件: meteor-template.css meteor-templ...

    cjie 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<