Angular路由守卫在订阅中未解析
创始人
2024-10-28 04:30:29
0

问题描述:当使用路由守卫来防止未授权的访问时,我们经常遇到在订阅内部无法解决的问题。这可能是由于订阅在路由守卫之前解析,因此路由守卫无法获取所需的数据。

解决方案:为了解决此问题,我们可以从rxjs中引入switchMap操作符,并使用它来返回可观察对象。这将确保我们的路由守卫能够解析所需的数据。

示例代码:

import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { AuthService } from '../services/auth.service';
import { switchMap } from 'rxjs/operators';

@Injectable()
export class AuthGuard implements CanActivate {

  constructor(private authService: AuthService, private router: Router) {}

  canActivate() {
    return this.authService.isAuthenticated().pipe(
      switchMap((isAuthenticated) => {
        if (isAuthenticated) {
          return true;
        } else {
          this.router.navigateByUrl('/login');
          return false;
        }
      })
    );
  }

}

在上面的代码中,我们在canActivate函数中返回一个可观察对象,该对象使用 switchMap操作符将 isAuthenticated可观察对象映射为一个新的可观察对象。这样,我们的路由守卫就可以在完全解决订阅后使用 isAuthenticated的值来决定是否通过路由守卫进行认证。

相关内容

热门资讯

昨日!wepoker透视脚本(... 您好:这款wepoker透视脚本游戏是可以开挂的,确实是有挂的,很多玩家在这款wepoker透视脚本...
日前!wpk透视辅助靠谱吗(透... 日前!wpk透视辅助靠谱吗(透视)原来是有挂(有挂助手开挂辅助辅助器)-哔哩哔哩;无需打开直接搜索微...
据目击者称!wepoker钻石... 据目击者称!wepoker钻石怎么看底牌(透视)一直真的是有挂(有挂辅助开挂辅助脚本)-哔哩哔哩您好...
做出回应!福建天天开心辅助工具... 福建天天开心辅助工具是一款专注玩家量身打造的游戏记牌类型软件,在福建天天开心辅助工具这款游戏中我们可...
据公告内容!sohoo pok... 据公告内容!sohoo poker辅助器(透视)其实是有挂(有挂总结开挂辅助辅助器)-哔哩哔哩 了解...
随着!余干中至怎么输就一直输(... >>您好:余干中至怎么输就一直输确实是有挂的,很多玩家在这款余干中至怎么输就一直输游戏中打牌都会发现...
围绕透视问题!哈糖大菠萝万能挂... 围绕透视问题!哈糖大菠萝万能挂(透视)一贯是有挂的(了解有挂开挂辅助辅助器)-哔哩哔哩;无需打开直接...
针对!广西老友玩有破解码(辅助... 针对!广西老友玩有破解码(辅助挂)一直是有挂的(有挂经验)-哔哩哔哩;打开点击测试直接进入微信(13...
近年来!hhpoker辅助码(... 近年来!hhpoker辅助码(透视)原来是有挂的(有挂教学开挂辅助下载)-哔哩哔哩您好:hhpoke...
截至发稿!新天道辅助器怎么设置... 截至发稿!新天道辅助器怎么设置(辅助挂)一直是有挂(有挂模板)-哔哩哔哩1、下载安装好新天道辅助器怎...