繁体   English   中英

基于NGRX存储实现路由器保护

[英]Implement Router Guard Based on NGRX Store

我想基于store中的值实现路由器防护。如果用户登录到应用程序,我想获得该用户的角色并激活子模块路由中的某些路由。

我将发布当前的实现,但是那根本没有用

PS我不使用角路由器存储

canActivate(): {
   return this.store.pipe(select(selectUser)).pipe(
      skip(1),
      map((user) => {
        const userObj: any = user
        if (userObj.userRole === "Admin") {
          this.router.navigateByUrl('admin/tourprovider/genaral-infomation');
          return true;
        } else {
          this.router.navigateByUrl('home')
          return false;
        }

      })
     )
    }

我会这样尝试:

private user$: Observable<any>;
constructor(
    private store: Store<{ user: string }>,
    private router: Router
  ) {
  this.user$ = store.pipe(select('user'));
}

canActivate(): {
  return this.user$.pipe(
    take(1),
    tap((user) => console.log(user)), // Just to test if user do have a value
    map((user: any) => (user.userRole  === "Admin") ? true : this.router.parseUrl('/home'))
  );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM