我遵循了几篇文章以在Angular上实现JWT身份验证,并且似乎一切正常,除了未经授权检测401。
我想将用户重定向到登录页面,但我无法检测到401错误。
我有这个课:
export class JwtInterceptor implements HttpInterceptor {
constructor(public authService: AuthService) {
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).do((event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
console.log('HTPP REQUEST');
}
}, (err: any) => {
if (err instanceof HttpErrorResponse) {
if (err.status === 401) {
this.authService.collectFailedRequest(request);
console.log('Login boy');
}
}
});
}
}
,但不确定在哪里使用它。我有 auth.service.ts
,其中包含 login()
和 getToken()
方法和 jwt.interceptor.ts
,其中包含
providers: [PagerService, AuthService,
{
provide: HTTP_INTERCEPTORS,
useClass: TokenInterceptor,
multi: true
}, {
provide: HTTP_INTERCEPTORS,
useClass: JwtInterceptor,
multi: true
}
]
我必须在module.app.ts
中添加多个拦截器。不要忘记在拦截器中的export class...
之前添加@Injectable()
。