我试图创建一个认证系统,它分两部分工作。
首先,我需要使用用户名和密码进行调用,如果这是有效的,它将返回一个代码。
此代码用于检查它是否有效,如果有效,则由我认证的用户进行身份验证。
这个调用应该得到以下代码:
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并将数据返回给组件?
发布于 2018-08-01 15:22:40
马蹄
tap(val => this.authenticate(val.code)),试一试
switchMap(val => this.authenticate(val.code)),https://stackoverflow.com/questions/51636953
复制相似问题