我開發我有一個用戶區和管理區的應用程序。我已將這些分離爲獨立的Angular 2模塊。我已經成功實現了延遲加載,因此只有在用戶請求'/ admin'時才能加載管理模塊。安全地護衛懶加載模塊(角2)
從角2文檔,我看到,我可以指定一個 「canLoad」 後衛,像這樣:
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [AdminGuard]
}
和實施AdminGuard類中的函數canLoad像這樣:
canLoad(route: Route): boolean {
return this.authService.isAdmin();
}
(其中isAdmin()可以對後端API的調用這將返回當前用戶或類似的東西)的作用
但是,這實際上阻止任何非管理員從加載AdminModule?除非我誤解,否則所有這些代碼都位於客戶端,那麼是否有任何事情可以阻止客戶端修改「canLoad」方法,以便始終返回true?像這樣:
canLoad(route: Route): boolean {
return true;
}
因此允許客戶端加載他們想要的任何模塊。
顯然給後端的API,需要管理員狀態的任何呼叫都將受到保護,但它似乎是任何用戶都可以查看管理界面,這只是似乎有點怪我。有人可以幫我清楚嗎?
這不是真正的問題答案。它確實鏈接到一個很好的對話。到目前爲止,我在這個主題上找到的信息未能確定具有此功能的明確理由,或者無法解決此問題。幾分鐘前我發佈了這個問題:https://stackoverflow.com/questions/47613907/ – BBaysinger