我正在尝试检查用户是否已通过身份验证,并且正在使用一种方法,如果用户已通过身份验证,则该方法返回的观察值为true或false。我正在尝试做的事情是等到授权有一个值,然后在回调函数中检查它是true还是false,并根据其值执行操作。因此,基本上我不希望我的过滤器函数检查值是true还是false,而是在继续订阅回调中的代码之前检查是否有值。
这是我的功能:
this.oidcSecurityService.getIsAuthorized().pipe(filter(authorized => authorized !== undefined)).subscribe(authorized => {
console.log(authorized);
this.isAuthorized = authorized;
if (!authorized) {
debugger
this.login()
}
else {
debugger
this.getBoSpar()
}
});
我在做什么错了,我该如何使过滤器功能检查是否获取了授权,而不是真或假?我没有收到任何错误,尽管我知道用户已通过身份验证,但授权总会被评估为false(我已经将点击事件发生的逻辑分离开了,并且可行)。
答案 0 :(得分:0)
authorized !== undefined
看起来不正确
authorized != null
仅检查null和undefined
this.oidcSecurityService.getIsAuthorized()
.pipe(
tap(authorized => console.log('BEFORE', authorized)),
filter(authorized => authorized != null),
tap(authorized => console.log('AFTER', authorized))
)
.subscribe(authorized => {
console.log(authorized);
this.isAuthorized = authorized;
if (!authorized) {
debugger
this.login()
} else {
debugger
this.getBoSpar()
}
});
还可以使用水龙头检查过滤器前后的通过管道的值。