2014-11-22 62 views
0

我正在考慮從AngularJS切換到Ember作爲我正在使用的幾個Rails應用程序的前端框架。但是讓我有點a thing的東西涉及到模板HTML如何以及何時發送到瀏覽器。Ember Rails模板如何防止漏入瀏覽器?

對於Angular,我通常會設置一個類似於/api/v1/foo的Rails端點,以便調用foo.html將渲染一個模板並調用foo.json將渲染其數據;如果我想保護foo,我會將整個端點置於before_action :some_auth_method過濾器之後,從而有效地禁止未經授權訪問模板的數據。

與Ember,它看起來彷彿預編譯把手模板都發送到瀏覽器中的一個大的塊,使得惡意訪問者可以很容易地看到他們的樣子---裸露的數據,這是真的,但我仍然不確定我對於泄露給每個湯姆,迪克和哈克的應用程序的內部工作有着模糊的細節。

所以我的第一個問題當然是:我錯過了什麼嗎?如果我不是,那麼:有沒有辦法解決這個問題?

回答

2

不,你不會錯過任何東西,這就是Ember如何開箱即用。有沒有辦法解決這個問題?大概。但在你嘗試解決它之前,你應該認真考慮它是否真的值得。你真的如果有人擁有你的網站的HTML模板嗎?如果你的安全設置正確,你不應該在意。但是,如果你照顧,我可能會這樣做:

  1. 在您的服務器上設置路由以檢查客戶端路由的訪問權限。
  2. 設置一種將模板從服務器發送到客戶端的方式。我會發送預編譯模板,然後使用eval()來獲取函數,或發送HTML並使用Handlebars編譯器在客戶端編譯它。
  3. 如果您的beforeModel掛鉤了路線,請檢查路線的存取。如果用戶有權訪問,請獲取模板,將其存儲在Ember.TEMPLATES中,然後讓用戶進入。如果用戶無權訪問,請將其重定向到其他地方。

您的問題中沒有很多細節,因此我無法得到更具體的內容,但類似這樣的內容可以讓您在需要時異步加載模板。有一個類似的討論on the Ember forum

+0

非常感謝,對於論壇鏈接的回答,以及對我的溫和建議,我可能會推翻它!我非常感謝這三者,我期待挖掘您提供的資源。 – Daniel 2014-11-22 17:38:05