我正在使用角度4.x
在开发环境中,如果有人重新启动服务器,或者如果用户从另一个选项卡注销,然后用户继续尝试从另一个选项卡执行某些操作,他/她就会在页面上看到错误。
我想使用Angular的HTTP服务集中解决方案,这样如果用户尝试执行任何操作并且由于会话过期而发生错误,我们就想刷新页面。
答案 0 :(得分:1)
所以这是我从here获得的HttpInterceptor类的示例(完整的plunker here)。
@Injectable()
export class MyHttpLogInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log('processing request', request);
const customReq = request.clone({
headers: request.headers.set('app-language', 'it')
});
return next
.handle(customReq)
.do((ev: HttpEvent<any>) => {
if (ev instanceof HttpResponse) {
console.log('processing response', ev);
}
})
.catch(response => {
if (response instanceof HttpErrorResponse) {
console.log('Processing http error', response);
}
return Observable.throw(response);
});
}
}
catch
块可能是您感兴趣的内容。您可以检查错误并检查它是否来自会话过期,然后对其做出正确反应。
您需要在app.module中提供此拦截器。
providers: [
{ provide: HTTP_INTERCEPTORS, useClass: MyHttpLogInterceptor, multi: true }
]