angular 中多个用户的 CanActivate 防护
CanActivate guard for multiple users in angular
我有一个像这样的 canActivate auth-guard:
return this.auth.user$.map(user => {
if (user) return true;
this.router.navigate(["/login"], {queryParams: {returnUrl: state.url}});
return false;
});
}
并将其用于这样的路线:
{path: 'my-project', component: ToolComponent, canActivate: [AuthGuard]}
我想让多个用户能够在同一个项目上工作
示例:
项目 1 上的用户 A 和 B
项目 2 上的用户 C 和 B
等等
最好的方法是什么?
好吧!
“典型”是为每个用户分配一个“角色”(admin/user),但在您的情况下,我想您有多个项目。所以你的“用户”应该有一个 属性 项目可以访问并且你的路由器的路径可以添加“数据”。有些喜欢
{ path: 'project1/ComponentOne', component: Component1,
canActivate: [CheckGuard],data:{project:"project1"} },
您的“checkGuard”可以考虑“用户”和“数据”
@Injectable()
export class CheckGuard implements CanActivate {
constructor(private router: Router,private accountService:AccountService) { }
canActivate(activatedRouteSnapshot: ActivatedRouteSnapshot,
routerStateSnapshot: RouterStateSnapshot) {
//in activatedRouteSnapshot.data you has the "data" of the router
console.log(activatedRouteSnapshot.data)
...your logic here..
}
}
我有一个像这样的 canActivate auth-guard:
return this.auth.user$.map(user => {
if (user) return true;
this.router.navigate(["/login"], {queryParams: {returnUrl: state.url}});
return false;
});
}
并将其用于这样的路线:
{path: 'my-project', component: ToolComponent, canActivate: [AuthGuard]}
我想让多个用户能够在同一个项目上工作
示例: 项目 1 上的用户 A 和 B 项目 2 上的用户 C 和 B 等等
最好的方法是什么?
好吧!
“典型”是为每个用户分配一个“角色”(admin/user),但在您的情况下,我想您有多个项目。所以你的“用户”应该有一个 属性 项目可以访问并且你的路由器的路径可以添加“数据”。有些喜欢
{ path: 'project1/ComponentOne', component: Component1,
canActivate: [CheckGuard],data:{project:"project1"} },
您的“checkGuard”可以考虑“用户”和“数据”
@Injectable()
export class CheckGuard implements CanActivate {
constructor(private router: Router,private accountService:AccountService) { }
canActivate(activatedRouteSnapshot: ActivatedRouteSnapshot,
routerStateSnapshot: RouterStateSnapshot) {
//in activatedRouteSnapshot.data you has the "data" of the router
console.log(activatedRouteSnapshot.data)
...your logic here..
}
}