2016-02-05 45 views
2

在流星中,我們將所有敏感代碼放在/server中,瀏覽器代碼放在/client中。然後流星自動編譯和縮小所有/client側代碼給我們。謝謝流星。我使用https://github.com/alanning/meteor-roles來管理用戶角色的內容。其中一個角色是管理員,我有一個客戶端腳本,僅供該用戶使用,例如:/client/admin-only/**.js。這些腳本中的所有代碼都會檢查用戶是否是管理員,並且只會調用服務器來執行敏感任務,但我不希望任何人但管理員能夠看到該代碼。阻止用戶按角色查看流星客戶端腳本

我想要確保的是,這些客戶端管理JS文件只下載到實際管理員的用戶,而不包含在Meteor創建的自動編譯/縮小的JS中。

有什麼辦法可以設置Meteor生成它的客戶端JS的兩個版本 - 一個用於普通用戶,一個用於管理員 - 只能根據用戶角色下載這些文件?

+2

沒有。如果看到沒有任何已發佈數據的代碼實際上是一個問題,那麼您需要將其綁定到單獨的應用程序中。 –

+0

我們正在考慮什麼樣的代碼?對於同樣的安全性來說,在服務器上定義它並不會更好,並且不會排除在客戶端之外?特別是特權檢查。 – pikausp

+0

準確地說,這就是我正在做的事情,但你仍然需要一些客戶端腳本。這是我想隱藏的劇本。 –

回答

0

Meteor Guide解決了這個問題:

雖然應用程序的客戶端代碼必然是由瀏覽器來訪問,每個應用程序將有你不想共享服務器上的一些祕密代碼與世界。應用程序中的祕密業務邏輯應該位於僅在服務器上加載的代碼中。這意味着它位於應用程序的服務器/目錄中,僅包含在服務器中的包中,或包含在僅在服務器上加載的包中的文件中。

基本上,千年發展目標的指導原則是儘可能地減弱管理視圖。如果這是不可接受的,您需要將它捆綁在單獨的Meteor應用程序中,或者僅使用內部可訪問的網絡,或者使用two MongoDB instances,這樣您就可以爲第二個應用程序分別驗證身份。

+0

是的,這就是我所做的。我想要做的是完全刪除客戶端代碼。 –