Hi,
I’ve a REST web service called “validateauth” that, if called using Basic Authentication, returns the uid and the role of a user.
I want to use this web service to authenticate the users during the login phase.
I’m calling the web service in this way:
login.html
<form [formGroup]="login_form" (ngSubmit)="login()" padding>
...
<ion-input formControlName="username" type="text" [(ngModel)]="username"></ion-input>
</ion-item>
...
login.ts
login() {
this.wsmanager.authenticate(this.username, this.password).subscribe(data => {
let result = data['result'];
let uid = data['data']['uid'];
let role = data['data']['role'];
if (result==RESULT_OK) {
// LOGIN OK
console.log("Login OK");
//loader.dismiss();
this.wsmanager.loginSuccess(this.username, this.password, uid, role);
this.navCtrl.setRoot(TabsPage);
} else {
// LOGIN KO
console.log("Login KO");
//loader.dismiss();
console.warn('Login failed.');
let alert = this.alertCtrl.create({title: "Login errato", message: "Autenticazione fallita."});
alert.present();
}
});
}
ws.manager.ts
public authenticate(username: string, password: string) {
let tempToken = this.calculateToken(username, password);
let baseUrl = this.getBaseUrl();
let wsHeader = new HttpHeaders({
'Content-Type': 'application/json',
'Accept': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
'Authorization': 'Basic ' + tempToken,
});
return this.http.get(baseUrl + '/validateauth', {headers: wsHeader});
}
But something strange is happing.
When i click on the login button, both the the function login and authenticate are called 2 times (I can see this from Chrome launching the App with the command ionic serve -lcs).
On the web server I can see (logging some prints in the error.log file) that the the web service is called 4 times: the first 2 times with $_SERVER[‘PHP_AUTH_USER’] and $_SERVER[‘PHP_AUTH_PWD’] empty, the last 2 times with this parameters filled in the right way.
Is this the right way to call a REST authentication web service?
Thank you
cld