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