From 50223d066f7bb4446e47467463783b7f0170f889 Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Wed, 06 Jun 2018 13:59:30 +0800
Subject: [PATCH] 登录失效拦截完善

---
 src/app/business/services/http/login.service.ts |   32 +++++++++++++++++++++++++-------
 1 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/src/app/business/services/http/login.service.ts b/src/app/business/services/http/login.service.ts
index b5c1b6f..989d7d7 100644
--- a/src/app/business/services/http/login.service.ts
+++ b/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(
@@ -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();
+    }
   }
 }

--
Gitblit v1.8.0