我有不同的用户角色,并且根据登录的用户角色,我想在登录后更改默认页面(登录页面)。我如何实现它,还没有找到任何在线资源,是它需要实现的东西或我遗漏的东西:
我有两个模块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路径显示为登录页面。如何根据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 :(得分:0)
在守卫内而不是返回true
或false
,您可以根据用户的角色重定向用户。
示例:
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;
}