| | |
| | | // 每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( |
| | |
| | | } |
| | | ); |
| | | } |
| | | get _refreshToken(){ |
| | | get _refreshToken() { |
| | | return !!this.authorization.refreshToken ? this.authorization.refreshToken : this.refreshTokenFromLocal; |
| | | } |
| | | get refreshTokenFromLocal(): string { |
| | |
| | | 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'); |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | } |