Angular Ionic 2登录组件和身份验证服务
我正在我的Ionic 2应用程序中开发一个简单的登录 我有一个登录组件,它呈现我的登录视图,然后向auth服务发送电子邮件和密码,auth服务将验证、保存令牌并向登录组件返回true或false 我的登录组件:Angular Ionic 2登录组件和身份验证服务,angular,ionic-framework,ionic2,Angular,Ionic Framework,Ionic2,我正在我的Ionic 2应用程序中开发一个简单的登录 我有一个登录组件,它呈现我的登录视图,然后向auth服务发送电子邮件和密码,auth服务将验证、保存令牌并向登录组件返回true或false 我的登录组件: export class LoginPage { email: string; password: string; constructor(public navCtrl: NavController, public navParams: NavParams,
export class LoginPage {
email: string;
password: string;
constructor(public navCtrl: NavController, public navParams: NavParams, public authentifiction: Authentification) {}
login() {
this.authentifiction.login(this.email, this.password);
}
loginSuccess() {
console.log('Success');
}
loginError() {
console.log('Failed');
}
}
和我的身份验证服务:
export class Authentification {
public authorized: boolean;
constructor(public http: Http, private alertCtrl: AlertController, public storage: Storage) {}
login(email, password) {
var params = 'email=' + email + '&password=' + password;
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
return this.http.post('URL', params, {
headers: headers})
.map(res => res.json())
.subscribe(
data => this.loginSuccess(data.auth_token),
error => this.loginError()
);
}
loginSuccess(auth_token) {
this.storage.set('auth_token', auth_token);
???
}
loginError() {
???
}
}
如何让身份验证服务根据登录是否成功返回true或false
整个可观察的东西对我来说仍然有点困惑…您没有直接返回布尔值,因为http请求不会立即响应。 相反,您将一个可观察对象返回给调用方,告诉他“我还没有答案,但这里有一个可观察对象,一旦我有了答案,它就会通知您”。 然后,调用者只需订阅这个可观察的(如邮件列表),并收到一个带有答案的信号(如接收电子邮件)
login(email, password): Observable<boolean> {
...
return this.http.post('URL', params, {
headers: headers
}).map(res => {
this.storage.set('auth_token', res.json().auth_token);
return true;
});
您不会直接返回布尔值,因为http请求不会立即响应。 相反,您将一个可观察对象返回给调用方,告诉他“我还没有答案,但这里有一个可观察对象,一旦我有了答案,它就会通知您”。 然后,调用者只需订阅这个可观察的(如邮件列表),并收到一个带有答案的信号(如接收电子邮件)
login(email, password): Observable<boolean> {
...
return this.http.post('URL', params, {
headers: headers
}).map(res => {
this.storage.set('auth_token', res.json().auth_token);
return true;
});
首先,感谢您对可观察事物的分类和可理解的解释。我实现了您的代码,但在我的身份验证服务中,我得到:找不到“可观察”。我必须导入其他库吗?是的,您可以从'rxjs'使用import{Observable};另外,我还想补充一点,您想要的响应类型,比如登录时的true或false,您可以在服务器的POST服务上实现它,您正在进行此HTTP POST调用。首先感谢您对可观察对象的排序和可理解的解释。我实现了您的代码,但在我的身份验证服务中,我得到:找不到“可观察”。我必须导入其他库吗?是的,您可以从'rxjs'使用import{Observable};另外,我想补充一点,您想要的响应类型,比如登录时的true或false,您可以在服务器的POST服务上实现它,您正在执行这个httppost调用。