我最近升级到 Angular 4,并且希望能够在用户收到 401
响应时从服务内重定向用户。我无法注入(inject) NavController
或 Nav
,因此我无法使其正常工作。
@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/