【发布时间】:2020-08-31 14:31:39
【问题描述】:
我正在使用来自 Visual Studio 模板的默认客户端身份验证服务。
有一个打字稿 AuthorizeService 有一个名为 isAuthenticated 的函数,它调用下面的函数并检查它是否为空。
getUser 函数:
public getUser(): Observable<IUser> {
return concat(
this.userSubject.pipe(take(1), filter(u => !!u)),
this.getUserFromStorage().pipe(filter(u => !!u), tap(u => this.userSubject.next(u))),
this.userSubject.asObservable());
}
当 .subscribe 在上述函数上被调用时。订阅被调用了 3 次。大概对于 concat 函数中的每个 observable 。使用上面的 getUser,我希望 subscribe 被调用一次。我将如何实现这一目标?
我尝试将上面的内容转换为返回一个值但由于某种原因没有成功的嵌套承诺,在返回结果后,即使用户存在于会话存储中,它也会返回 resolve(null)
【问题讨论】:
-
应该 getUser() 真的只发出一次,还是应该在用户更改时返回的 observable 发出当前用户?
标签: angular .net-core rxjs oidc-client