2017-10-18 39 views
1

據我瞭解,Angular2中的CanActivate界面僅對路由更改有效。所以,如果我有一個頁面p要求要記錄的用戶,我可以創建一個實現CanActivate接口保護這將使RouterModule激活p只有當用戶登錄。Angular2觸發CanActivate頁面處於活動狀態

但當p處於活動狀態且用戶已註銷時會發生什麼情況?我試圖找到檢查一個頁面是否被允許在不改變路由器模塊中的路由的情況下的最佳實踐,但是我找不到有用的東西。可以說,頁面p處於活動狀態,需要登錄。現在註銷會以某種方式觸發,而p處於活動狀態,但不涉及路由更改。假設服務器迴應了401,並且應用程序通知用戶沒有登錄。檢查活動頁面是否需要登錄並採取相應措施的最佳做法是什麼?這可能是活動頁面不需要登錄。在這種情況下,一切都應該保持原樣。

回答

1

你可以跟你的路線,你可以在以後使用,以檢查是否是必需的路由或不添加認證data

類似下面,

{ 
    path: ..., 
    component: ..., 
    canActivate: [CanActivateGuard], 
    data: { authRequired: true } 
} 
在註銷觸發器

,你可以注入ActivatedRoute檢查所激活的路線數據,以確定是否要發送用戶登錄頁面與否,

constructor(route: ActivatedRoute) {} 
... 
someCallBack(){ 
    if(!!this.route.snapshot.data 
    && this.route.snapshot.data.authRequired == true){ 

    // redirect to login page 

    } 
} 

希望這有助於!

相關問題