私は以下のコードを使用しますが、動作しません。トークンが4で期限切れになったときにサイレントログインしますか?
私がホームページに入力したとき、ログは表示されません(コンソールログでは、最初に表示され、最後に表示され、最後は2番目です)ので、順番に実行されないため、常に無効なトークンを返します。私はどこが間違っているのか分かりません。 私を助けてください。皆さん、ありがとうございました !
logIn(identifi : string, password : string) {
let headers = new Headers();
headers.append('Access-Control-Allow-Origin', '*');
headers.append('Access-Control-Allow-Methods', '*');
headers.append('Access-Control-Allow-Headers', 'Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With');
let body = {
"user_id" : identifi,
"password" : password
};
let options = new RequestOptions({ headers: headers });
return this.http.post(api.logIn, body, options).map((res:Response) => res.json());
}
checkToken() {
this.storage.get('user').then((user) => {
if(user) {
this.token = user.token;
this.token_date = user.token_date - 100;
this.currentDate = new Date();
this.expDate = new Date(this.token_date * 1000);
if (this.currentDate <= this.expDate) {
// token expired, login again
console.log('first');
this.logIn(user.user_id, user.password).subscribe(
data => {
this.storage.set("user", userInfo);
console.log('second');
return userInfo.token;
},
err => {
console.log(err);
});
}
}
})
}
getDataHomepage(retailerId: number,pageIndex: number) {
this.checkToken();
console.log('last');
let headers = new Headers();
headers.append('Authorization', 'Bearer ' + this.token);
let options = new RequestOptions({ headers: headers });
return this.http.get(api.promotion + '?retailer_id=' + retailerId + '&page=' + pageIndex, options).map((res:Response) => res.json());
}
ようflatMapとforkJoinを使用しています。 expDate)、関数getToken()はまだ最後に実行されます。私はトークンを得ることができません。何か案は ? –
コメントコードスニペットで彼女を追加できないので、私の他の投稿を見てください。https://stackoverflow.com/a/46603857/3853300 – Sheki