我正在尝试创建一个身份验证系统,它分为两个部分。
首先,我需要使用用户名和密码进行呼叫,如果有效,它将返回一个代码。
此代码用于检查它是否有效,以及是否已验证用户i。
此调用应获取代码:
requestAuthCode(request: models.AuthenticationRequest): Observable<any> {
return this.httpClient
.get<any>(environment.auth.authorize, {
headers: headers,
params: params
})
.pipe(
tap(val => this.authenticate(val.code)),
catchError(error => this.handleError(error))
);
}
此调用检查代码是否有效并验证用户身份
authenticate(code: string): Observable<any> {
return this.httpClient
.post<models.AuthenticationTokenResponse>(
environment.auth.token,
null,
{
headers: headers,
params: params
}
)
.pipe(
tap(data => this.setSession(data)),
catchError(error => this.handleError(error))
);
}
目标
如果requestAuthCode
的响应中包含代码,我希望它启动authenticate
调用,否则它必须返回错误。
但是我何时使用
this.authService.requestAuthCode(request)
.subscribe(
data => {
console.log(data);
}
我只是从requestAuthCode
而不是从链接的authenticate
调用中获取响应数据。我还可以看到authenticate
没有被触发。
如何实现requestAuthCode
触发authenticate
并将数据返回给我的组件?
答案 0 :(得分:1)
由
tap(val => this.authenticate(val.code)),
尝试
switchMap(val => this.authenticate(val.code)),