fengxiang
2018-06-06 50223d066f7bb4446e47467463783b7f0170f889
src/app/business/services/http/login.service.ts
@@ -23,12 +23,14 @@
          // 每2秒检查一次刷新token的时间点
          setInterval(
             () => {
                 if (this.needFreshFromLocal && this.isReachRefreshTime()) {
                 if (this.canRefreshToken()
                     && this.needFreshFromLocal
                     && this.isReachRefreshTime()) {
                        const _refreshToken =  this._refreshToken;
                        // 记录刷新时间
                        this.setRefreshTime();
                        // 置空needfreshtoken
                        localStorage.setItem('needRefreshToken', 'false');
                        const _refreshToken =  this._refreshToken;
                        localStorage.setItem('needRefreshToken', 'false');
                        if (!!_refreshToken) {
                            this.http.get(this.urls.refreshToken, {headers: {'X-Refrsh-Token': 'Bearer ' + _refreshToken}} )
                            .subscribe(
@@ -65,7 +67,7 @@
        }
      );
  }
  get _refreshToken(){
  get _refreshToken() {
    return !!this.authorization.refreshToken ? this.authorization.refreshToken : this.refreshTokenFromLocal;
  }
  get refreshTokenFromLocal(): string {
@@ -75,7 +77,7 @@
     return localStorage.needRefreshToken === 'true';
  }
  private setRefreshTime() {
          localStorage.setItem('refreshTime', new Date().getTime().toString());
    localStorage.setItem('refreshTime', new Date().getTime().toString());
  }
  private setNeedRefreshToken() {
    localStorage.setItem('needRefreshToken', 'true');
@@ -84,11 +86,27 @@
        const expiredTime = Number(localStorage.expiredTime);
        return !!this.refreshTime && !!expiredTime && this.refreshTime + (expiredTime / 2) * 60000 < new Date().getTime();
  }
  get refreshTime(): number  {
  private get refreshTime(): number  {
    return  Number(localStorage.refreshTime);
  }
  public clearRefreshToken() {
    localStorage.expiredTime = null;
    localStorage.refreshTime = null;
    localStorage.refreshToken = null;
    this.authorization = null;
    localStorage.removeItem('expiredTime');
    localStorage.removeItem('refreshTime');
    localStorage.removeItem('refreshToken');
  }
  private canRefreshToken() {
     return !!localStorage.getItem('expiredTime')
            && !!localStorage.getItem('refreshTime')
            && !!localStorage.getItem('refreshToken');
  }
  public refreshToken () {
           // 设置需要刷新token
           this.setNeedRefreshToken();
    if (this.canRefreshToken()) {
      // 设置需要刷新token
      this.setNeedRefreshToken();
    }
  }
}