簡體   English   中英

Angular2路由器CanActivate,帶參數?

[英]Angular2 Router CanActivate, with Parameters?

我在這個具體問題上看到了一些問題。

我最近只處理angular2項目。 無論如何我現在正在討論一個問題。 在已棄用的路由器中,我在路由的數據部分添加了用戶角色,我已經覆蓋了routerOutlet,因此我可以在激活路由之前檢查此值)。

目前我們可以使用CanActivate類/接口行,我們可以調用它。

現在我希望能夠為這樣的CanActivate類提供權限(我已經打成了Enum)。 在我通過訪問我的SessionService來檢查用戶是否已登錄之前,我現在需要檢查用戶是否具有某些權限。

正如我現在所看到的,我必須實現一個新的類,它為每個權限實現CanActivate。 現在這意味着我將擁有7.然而,我們處於這個確切項目的早期階段並且沒有太多想到我可以將其提高到11。

我在我之前看到的是一個實現,每個canActivate實現只需要花費大約3-5行。 但是,通過我可以提供屬性或參數的實現,我會感覺更有幫助。

不要想到我必須實現以下類的情況:

CanActivateIfUserHasPermissionsViewContentAndViewUsers甚至更長。

注意在我的情況下權限基本上是多個動作。 比如查看所有內容元素,或者編輯所有內容元素等。

所以我找不到用params實現CanActivate的方法。

然而,我找到了一個對我來說似乎很好的解決方法。 我有一個服務,我可以在Module構造上加載我的路由。 (我只是將它添加到模塊的構造函數中)。

我的路線現在包含數據{權限:[我在這里的值]}。 在canActive鈎子中檢查了哪些,因為canActivate實現也使用相同的服務。

我的解決方案基於我對另一個問題的討論: Angular2 RC5跨模塊提供程序/掃描

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM