首页 > 解决方案 > 如何在 AuthGuard 中动态返回真值?

问题描述

我有一个具有多个条件的身份验证守卫,我想动态返回真值。我怎样才能做到这一点?下面是我的代码

auth.guard.ts

canLoad(route: Route, segments: UrlSegment[]): Observable<boolean>|Promise<boolean>|boolean {
    const isSuperAdmin = this.authService.getAuth().role === 'SUPERADMIN';
    const isAdmin = this.authService.getAuth().role === 'ADMIN';
    if (!isAdmin || !isSuperAdmin) {
      this.router.navigate(['/notifications']);
    }
    return true;  //how can I return true dynamically?
}

标签: angulartypescript

解决方案


您可以定义一个布尔变量并相应地更改它:

像这样 :

    canLoad(route: Route, segments: UrlSegment[]): Observable<boolean>|Promise<boolean>|boolean {

        let dynamicReturn = false;

          const isSuperAdmin = this.authService.getAuth().role === 'SUPERADMIN';
            const isAdmin = this.authService.getAuth().role === 'ADMIN';
            if (!isAdmin || !isSuperAdmin) {

              //change dynamicReturn value accordingly
              dynamicReturn = true
              this.router.navigate(['/notifications']);
            }
            return dynamicReturn ;  //how can I return true dynamically?
        }

推荐阅读