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 | 37 +++++++++++++++++++++++++++---------- 1 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/app/business/services/http/login.service.ts b/src/app/business/services/http/login.service.ts index 5b3cfa4..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( @@ -50,9 +52,8 @@ this.authorization = res; const now = new Date(); // expiredTime,refreshToken,refreshTime ������������ token ������������ - const expiredTime = !!this.authorization.expiredTime ? this.authorization.expiredTime.toString() : null; this.setRefreshTime(); - localStorage.setItem('expiredTime', expiredTime); + localStorage.setItem('expiredTime', String(this.authorization.expiredTime)); localStorage.setItem('refreshToken', this.authorization.refreshToken); return res; } @@ -66,7 +67,7 @@ } ); } - get _refreshToken(){ + get _refreshToken() { return !!this.authorization.refreshToken ? this.authorization.refreshToken : this.refreshTokenFromLocal; } get refreshTokenFromLocal(): string { @@ -76,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'); @@ -85,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