我是Ionic和Angular的新手,来自多年的.NET开发。我正在在线尝试一些示例来构建使用 Ionic 2 的登录原型。
我让 WebAPI 在后台工作,只是根据传递的凭据是否正确返回 JSON 真或假。
我得到了如下所示的身份验证提供程序:
public login(credentials) {
if (credentials.email === null || credentials.password === null) {
return Observable.throw("Please insert credentials");
} else {
this.result = this.http.post(this.CONST.APIUrl, JSON.stringify(credentials), new RequestOptions({headers: this.contentHeader})).map(res => res.json())
if (this.result)
{
this.currentUser = new User('Simon', 'saimon@devdactic.com');
}
return this.result;
}}
登录页面如下所示:
public login() {
this.showLoading()
this.auth.login(this.registerCredentials).subscribe(allowed => {
if (allowed) {
setTimeout(() => {
this.loading.dismiss();
this.nav.setRoot(HomePage)
});
} else {
this.showError("Access Denied");
}
},
error => {
this.showError(error);
});
}
目前,它总是将人登录。我知道这种情况正在发生,因为 this.result 总是有一个值。但是,在允许用户登录之前,我将如何检查从 API 返回的数据?
您可以使用
Observable.do 为可观察量创建副作用。
在登录功能中:
public login(credentials) {
if (credentials.email === null || credentials.password === null) {
return Observable.throw("Please insert credentials");
} else {
this.result = this.http.post(this.CONST.APIUrl,
JSON.stringify(credentials), new RequestOptions({headers: this.contentHeader}))
.map(res => res.json())
.do(userData=>{
//check userData and set current user
this.currentUser = new User('Simon', 'saimon@devdactic.com');
return userData;//make sure to return the value to subscribe
});
return result;
}}