我正在尝试从 ionics 检索令牌storage
in getToken()
并使用它refreshToken()
通过将令牌传递给来查看令牌是否过期(this.jwtHelper.isTokenExpired(this.token)
根据令牌是否过期返回 true 或 false。我已发表评论refreshToken()
我收到以下错误
Error 1:
Error: TS2345:Argument of type '(response: Response) => void' is not assignable to parameter of type '(value: Response) => void'.
Types of parameters 'response' and 'value' are incompatible.
Type 'Response' is not assignable to type 'Response'. Two different types with this name exist, but they are unrelated.
Property 'body' is missing in type 'Response'.
Error 2:
Error:(34, 46) TS2339:Property 'token' does not exist on type 'Promise<any>'.
My code
import {AuthHttp, JwtHelper, tokenNotExpired} from "angular2-jwt";
import {Observable} from "rxjs/Observable";
import {AuthService} from "../Services/Auth/auth.service";
import {Injectable} from "@angular/core";
import { Storage } from '@ionic/storage';
import {AlertController} from "ionic-angular";
@Injectable()
export class TokenProvider {
jwtHelper: JwtHelper = new JwtHelper();
token;
constructor(private authHttp: AuthHttp, private storage: Storage, private alertCtrl: AlertController) {
}
getToken(): Promise<any> {
return this.storage.get('token').then(token => {
this.token = token;
});
}
refreshToken(): Observable<any> {
return this.token = Observable.fromPromise(this.getToken())
.flatMap(() => {
if(this.jwtHelper.isTokenExpired(this.token))
{
return this.authHttp.get('localhost.api/refresh')
.subscribe( // ERROR 1 HERE
(response: Response) => {
this.token = response.json().token; // ERROR 2 HERE
},
(error: Response) => {
console.log(error);
});
}
});
}
你没有导入Response
在你的代码中。编译器可能对哪个感到困惑Response
使用,因为您的打字中可能有多个定义:
import { Response } from '@angular/http';
另外,您不会返回内部的可观察值flatMap
。您正在返回Subscription
。返回原始可观察值,如下所示:
refreshToken(): Observable <any> {
let observable = Observable.fromPromise(this.getToken())
.filter(() => this.jwtHelper.isTokenExpired(this.token))
.flatMap(() => this.authHttp.get('localhost.api/refresh'));
observable.subscribe((response: Response) => {
this.token = response.json().token;
}, (error: Response) => {
console.log(error);
});
return observable;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)