微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Angular 路由保护中使用 NGXS 操作生命周期

如何解决在 Angular 路由保护中使用 NGXS 操作生命周期

我的应用程序使用 NGXS,我想使用路由保护来验证用户的身份验证。 为此,我想向服务器发送一个请求,该请求应该返回用户权限级别,或者如果我拥有的 cookie 中的令牌已过期则失败。

所以我尝试了这样的事情:

    canActivate(
        next: ActivatedRouteSnapshot,state: RouterStateSnapshot
    ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
        // Get RBAC. If it works,Cookie is ok and we can continue. If it fails,block the navigation
        return this.store.dispatch(new GetRBAC()).pipe(
            mapTo(true),catchError(() => of(false)),);
    }

由于 NGXS 操作有一个生命周期,并且 Angular 守卫可以返回可观察对象,我认为这应该可行。过去我用过这个生命周期,但这里的守卫甚至没有完成。

我尝试自己订阅调度并返回不同的流:

    canActivate(
        next: ActivatedRouteSnapshot,state: RouterStateSnapshot
    ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
        const subject = new Subject<boolean>();

        // Get RBAC. If it works,block the navigation
        this.store.dispatch(new GetRBAC()).pipe(
            mapTo(true),).subscribe(v => s.next(v));

        return s.asObservable();
    }

但这也没有用。就像动作生命周期在守卫中不起作用......

当我完全不使用 NGXS 时,它显然工作正常。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。