摘要:通過這種方式我們可以用權限驗證的方式對于用戶端提交的行為判斷,確定用戶的提交形式是符合我們的要求的。同樣的我們需要增加和方法。這種工作方式的原理類似與,客戶端發送請求到服務器端,服務器更新,通知客戶端,客戶端正確的顯示數據。
在之前的例子中,我都是使用的很小的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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78615.html
摘要:通過這種方式我們可以用權限驗證的方式對于用戶端提交的行為判斷,確定用戶的提交形式是符合我們的要求的。同樣的我們需要增加和方法。這種工作方式的原理類似與,客戶端發送請求到服務器端,服務器更新,通知客戶端,客戶端正確的顯示數據。 在之前的例子中,我都是使用的很小的demo,所有的測試都可以在客戶端直接對database進行CURD.實際的項目中有可以需要對于用戶操作databse有一定的權...
摘要:發布與訂閱在端使用函數注冊一個的發布者,需要在客戶端對進行訂閱,使用訂閱了現在已經添加的數據就會重新出現在頁面上。利用發布訂閱模式,我們也可以實現對于私有數據的訪問。 我們可以使用安全的方法讓用戶端不直接操作數據庫,但是還是可以直接讀取數據庫內容,如果我們還需要保護私有的數據存儲,在客戶端直接使用Collection.find(),這樣的操作方式在實際的項目中并不會使用,這樣的數據無法...
摘要:發布與訂閱在端使用函數注冊一個的發布者,需要在客戶端對進行訂閱,使用訂閱了現在已經添加的數據就會重新出現在頁面上。利用發布訂閱模式,我們也可以實現對于私有數據的訪問。 我們可以使用安全的方法讓用戶端不直接操作數據庫,但是還是可以直接讀取數據庫內容,如果我們還需要保護私有的數據存儲,在客戶端直接使用Collection.find(),這樣的操作方式在實際的項目中并不會使用,這樣的數據無法...
摘要:通過發布訂閱模式過濾數據現在我們已經把應用中比較敏感的代碼放到了一些方法里面,我們還需要學習安全故事的另一半內容了。當在客戶端被調用時傳入發布器名稱,客戶端將會從發布器訂閱所有的數據。這個按鈕應該只是給任務的所有者來顯示。 通過發布訂閱模式過濾數據 現在我們已經把應用中比較敏感的代碼放到了一些方法里面,我們還需要學習Meteor安全故事的另一半內容了。到現在為止,我們一直是假設整個整個...
閱讀 2950·2021-11-23 09:51
閱讀 3776·2021-11-22 15:29
閱讀 3226·2021-10-08 10:05
閱讀 1552·2021-09-22 15:20
閱讀 952·2019-08-30 15:56
閱讀 1069·2019-08-30 15:54
閱讀 733·2019-08-26 11:54
閱讀 2636·2019-08-26 11:32