2016-12-29 128 views
3

我有不同的用戶角色,並基於登錄的用戶角色,我想在登錄後更改默認頁面(登錄頁面)。我實現它,都沒有發現任何資源網上,有什麼事情需要被尚未實現或者我失去了一些東西:基於用戶角色角度路由器的動態登錄頁面「〜3.4.0」

我有兩個模塊ExceptionDashboard和cashierRiskprofile模塊路線

import { Routes, RouterModule } from "@angular/router"; 

import { CashierRiskProfileComponent } from "./cashierriskprofile.component"; 

const cashierRiskProfileRoutes: Routes = [ 
    { path: "", redirectTo: "cashierriskprofile", pathMatch: "full" }, 
    { path: "cashierriskprofile", component: CashierRiskProfileComponent } 
]; 

export const CashierRiskProfileRouting = RouterModule.forChild(cashierRiskProfileRoutes); 

上面的代碼會具有作爲cashierRiskprofile的默認路由。

ExceptionDashboard:

const exceptionDashboardRoutes: Routes = [ 
    { path: "exceptionDashboard", component: ExceptionDashboardComponent, pathMatch: 'full' }, 
    { path: "exceptionDetail", component: ExceptionDetailComponent, pathMatch: 'full' }, 
    { path: "exceptionTransaction", component: ExceptionTransactionComponent, pathMatch: 'full' } 
]; 

對於管理員用戶,我們顯示CashierRiskProfile作爲着陸頁已經被拖欠,其他用戶我想表現exceptionDashboard路徑的LandingPage。如何根據UserRole更改它。

我知道如何實現CanActivateViaAuthGuard「canActivate」服務重定向到一個特定的頁面,如果用戶沒有進行身份驗證,但我正在尋找根據用戶角色更改登錄頁面?

import { Injectable } from '@angular/core'; 
import { CanActivate } from '@angular/router'; 
//import { AuthService } from './auth.service'; 

@Injectable() 
export class CanActivateViaAuthGuard implements CanActivate { 

    constructor(/*private authService: AuthService*/) { } 

    canActivate() { 
     //if logged in return true 
     return true; 

     //else retrun to login page 
     //return false; 
    } 
} 

我想實現一些動態的默認頁面基於用戶角色的變化。

+0

這是還有用嗎? http://stackoverflow.com/questions/38402776/angular2-routing-canactivate-and-authguard-jwt-with-user-role-parameter –

回答

-1

在守衛而不是返回truefalse您可以根據他們的角色重定向用戶。

例子:

constructor(private authService: AuthService, private router: Router) {} 

canActivate() { 
     //if role is system manager 
     if(this.checkUserRoleFunction() == "system manager"){ 
      this.router.navigate(['/exceptionTransaction']); 
     }else if(this.checkUserRoleFunction() == "associate"){ 
      this.router.navigate(['/exceptionDetail']); 
     }else{ 
      this.router.navigate(['/exceptionTransaction']); 
     } 
     return false; 
    }