2017-01-27 22 views
1

我目前正在學習Angular 2,並且關注警衛。我明白他們是如何工作的,但我不明白爲什麼他們更喜歡簡單地禁用不希望用戶使用的導航控件?Angular 2爲什麼使用警衛而不是僅停用你不想點擊的鏈接?

在我看來,你可以做,擁有這些控制部件內。你怎麼從具有實現CanActivateCanDeactivate接口,以驅動邏輯獨立的階級得到什麼?一個後衛組件似乎增加了很多複雜性。

有人能解釋我錯過了什麼嗎?

回答

7

答案很簡單:看不到鏈接並不意味着你不能去那裏。

如果你是一個守衛頁面上,你書籤呢?那麼在幾天內你沒有訪問它,你試圖去那裏?你不會看到任何按鈕,但你有網址。

所以沒有衛兵,你將能夠在那裏導航。

除了應該對服務器端的額外的檢查,該用戶獲取數據依賴於自己的角色,但這是另外一個故事

1

除了由@Volodymyr提出的觀點,我發現,使用這些警衛(尤其是CanActivate)可在應用程序開始增長時保持組件代碼更清晰。

定義像AuthGuard in the Angular docs後衛保持在一個地方,邏輯,並且你可以應用它們更多的路由添加。任何新的組件都不需要關心它們是否可以被路由到或者如何被確定。

我們發現它們可用於授權等身份驗證,在守衛中定義該邏輯並將其保留在工作只是顯示一些數據的組件中。

另一個不錯的副作用是,在我們的5個開發團隊,如果我要調整保護邏輯是如何實現的,我不與任何人對這些部件的工作相沖突。

順便說一句,也發現使用類似的好處決心後衛預取數據。

相關問題