From b076f355b7b438b45e430cbd1c441ef5ff34b6fe Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Mon, 28 May 2018 17:14:19 +0800 Subject: [PATCH] 登录过期相应 --- src/app/core/net/default.interceptor.ts | 35 +++++++++++++++++++++++++++++------ 1 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/app/core/net/default.interceptor.ts b/src/app/core/net/default.interceptor.ts index cd954e0..e91ae6e 100644 --- a/src/app/core/net/default.interceptor.ts +++ b/src/app/core/net/default.interceptor.ts @@ -7,22 +7,44 @@ import { of } from 'rxjs/observable/of'; import { ErrorObservable } from 'rxjs/observable/ErrorObservable'; import { mergeMap, catchError } from 'rxjs/operators'; -import { NzMessageService } from 'ng-zorro-antd'; +import { NzMessageService, NzModalService } from 'ng-zorro-antd'; import { _HttpClient } from '@delon/theme'; import { environment } from '@env/environment'; import { LoginService } from '@business/services/http/login.service'; +import { Subject } from 'rxjs/Subject'; +import { error } from 'protractor'; +import { debug } from 'util'; /** * ������HTTP������������������������������ `app.module.ts` */ @Injectable() export class DefaultInterceptor implements HttpInterceptor { - constructor(private injector: Injector) {} + private unLoginHandle: Subject<HttpErrorResponse> = new Subject<HttpErrorResponse>(); + constructor(private injector: Injector) { + this.unLoginHandle.debounceTime(100).subscribe(event => { + if (!!event.error) { + let errorMsg = ''; + const erroCode = <number>event.error['errorCode']; + switch (erroCode) { + case 10: errorMsg = '���������,���������'; break; + case 11: errorMsg = '������������,���������������'; break; + case 12: errorMsg = '������������,������������������'; break; + } + this.model.info({ + title: errorMsg, + onOk: () => this.goTo('/passport/login') + }); + } + }); + } get msg(): NzMessageService { return this.injector.get(NzMessageService); } - + get model(): NzModalService { + return this.injector.get(NzModalService); + } private goTo(url: string) { setTimeout(() => this.injector.get(Router).navigateByUrl(url)); } @@ -45,7 +67,8 @@ // } break; case 401: // ������������������ - this.goTo('/passport/login'); + // this.goTo('/passport/login'); + this.unLoginHandle.next(<HttpErrorResponse>event); break; case 403: case 404: @@ -69,9 +92,9 @@ } // ��������������������������� let url = req.url; - if (!url.startsWith('https://') && !url.startsWith('http://')&& !url.startsWith('assets')) { + if (!url.startsWith('https://') && !url.startsWith('http://') && !url.startsWith('assets')) { // url = environment.SERVER_URL + url; - url = environment.SERVER_BASH_URL+url; + url = environment.SERVER_BASH_URL + url; } const newReq = req.clone({ -- Gitblit v1.8.0