簡體   English   中英

CanActivate Guard for multiple users in angular

[英]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 依此類推

最好的方法是什么?

泰!

“典型”是為每個用戶分配一個“角色”(管理員/用戶),但在你的情況下,我想你有幾個項目。 因此,您的“用戶”應該具有項目可以訪問的屬性,並且路由器的路徑可以添加“數據”。 有些喜歡

  { 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..
  } 
}

暫無
暫無

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

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