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辅助是真的假的,素来存在有挂(透视)透明挂教程(有挂介绍);进入游戏-大厅...
透视科技!德州透视脚本,wer... 透视科技!德州透视脚本,werplan有挂吗,科技教程(有挂技巧)1、打开软件启动之后找到中间准星的...
透视玄学!wpk辅助软件,有哪... 透视玄学!wpk辅助软件,有哪些免费的wpk作弊码,wpk教程(好像存在有挂);该软件可以轻松地帮助...
透视免费!wepoker透视底... 透视免费!wepoker透视底牌脚本,从来是有挂(透视)必胜教程(有挂教程);一、wepoker透视...
透视ai代打!wpk模拟器多开... 透视ai代打!wpk模拟器多开,wpk官网下载链接,玩家教程(确实真的有挂);wpk官网下载链接辅助...
透视教程!werplan怎么透... 透视教程!werplan怎么透视,哈糖大菠萝开挂,总结教程(有挂介绍)1、用户打开应用后不用登录就可...
透视最新!wepoker有没有... 透视最新!wepoker有没有挂,先前存在有挂(透视)可靠技巧(有挂插件)亲,关键说明,wepoke...
透视安卓版!wpk辅助器是真的... 透视安卓版!wpk辅助器是真的吗,wpk私人局辅助是真的吗,第三方教程(竟然真的有挂)1、该软件可以...
透视智能ai!约局吧app有挂... 透视智能ai!约局吧app有挂吗,xpoker怎么作弊,扑克教程(有挂插件)1、很好的工具软件,可以...
透视app!aa poker辅... 透视app!aa poker辅助,原本有挂(透视)线上教程(有挂介绍)1、每一步都需要思考,不同水平...