ionic-framework - 来自 HttpInterceptor 的 Ionic 重定向

标签 ionic-framework service ionic2

我最近升级到 Angular 4,并且希望能够在用户收到 401 响应时从服务内重定向用户。我无法注入(inject) NavControllerNav,因此我无法使其正常工作。

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

  constructor(public auth: AuthProvider, private global: GlobalVariablesProvider) {}

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    console.log("401 working")

    return next.handle(request).do((event: HttpEvent<any>) => {
      if (event instanceof HttpResponse) {

      }
    }, (err: any) => {
      console.log(err)
      if (err instanceof HttpErrorResponse) {
        console.log(err)
        if (err.status === 401) {
          this.global.handleResponse("Unathorized attempt.  Redirecting to login")

          // Perform redirect
        }
      }
    });
  }
}

我认为我需要访问全局nav,但我不确定如何做到这一点。

最佳答案

我能够导入App并调用getRootNav():

import { App } from "ionic-angular"

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

  constructor(public auth: AuthProvider, public app: App, private global: GlobalVariablesProvider) {}

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    return next.handle(request).do((event: HttpEvent<any>) => {
      if (event instanceof HttpResponse) {

      }
    }, (err: any) => {
      console.log(err)
      if (err instanceof HttpErrorResponse) {
        console.log(err)
        if (err.status === 401) {
          this.global.handleResponse("Unauthorized attempt.  Redirecting to login")
          this.app.getRootNav().setRoot(LoginPage)
        }
      }
    });
  }
}

关于ionic-framework - 来自 HttpInterceptor 的 Ionic 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49285723/

相关文章:

ios - Ionic Cordova iOS xxx 不支持预配配置文件 Azure Pipelines

javascript - 在 Ionic 4 中关闭 Modal 后如何调用函数

java - 从 Liferay 门户获取文章

javascript - 使用过滤器或管道将产品类别加载到 Ionic 2 的页面中?

javascript - Ionic 2 与 WooCommerce API

angular - 处理 'handleError ` 和 `extractData` 私有(private)方法的最佳实践

ionic-framework - Ionic 2-将背景图像添加到页面

testing - 如何在 Grails 2.0 服务中单元或集成测试使用注入(inject)的 messageSource for i18n

android - 检测用户是否与手机交互?

css - 如何在 Ionic2 中动态设置文本颜色