延迟路由canActivate方法调用,直到后端服务返回角度7的结果

需要延迟路由canactivate方法调用,直到我的身份验证服务为用户ID返回用户角色为止。

我们的angular应用程序没有任何登录页面,它使用服务器登录中的用户ID。 当用户访问URL时,将在app.compoment.ts中调用身份验证服务,但在该服务返回任何结果之前,将调用canactivate方法,并且该用户当时没有用户角色。因此阻止了所有用户访问。

我尝试使用异步并等待https调用来获取用户数据,但这也没有用。 有人可以帮忙吗?

vbsnowy 回答:延迟路由canActivate方法调用,直到后端服务返回角度7的结果

在这里,rxJS的pipe()很有用,而不是先订阅使用pipe()。

canActivate(路由:ActivatedRouteSnapshot,状态:RouterStateSnapshot):可观察{         返回this.loginService.isLoggedIn()。pipe(             map(e => {                如果(e){                    返回true;                  }其他{

             }
         }),catchError((err) => {
             this​.​router​.​navigate​([​'/login'​]);
             return of(false);
           })
      );
  }   
本文链接:https://www.f2er.com/2921918.html

大家都在问