Angular 使用 JWT 检测 401 未授权访问
Angular Detect 401 Unauthorized Access using JWT
我按照几篇文章在 Angular 上实施 JWT 身份验证,似乎一切正常,除了检测到 401 未经授权。
我想将用户重定向到登录页面,但我无法检测到 401 错误。
我有这个 class:
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');
}
}
});
}
}
但不确定在哪里使用它。我有包含 login()
和 getToken()
方法的 auth.service.ts
和包含
的 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()
。
我按照几篇文章在 Angular 上实施 JWT 身份验证,似乎一切正常,除了检测到 401 未经授权。
我想将用户重定向到登录页面,但我无法检测到 401 错误。
我有这个 class:
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');
}
}
});
}
}
但不确定在哪里使用它。我有包含 login()
和 getToken()
方法的 auth.service.ts
和包含
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()
。