Angular Detect 401 Unauthorized Access 使用 JWT

Posted

技术标签:

【中文标题】Angular Detect 401 Unauthorized Access 使用 JWT【英文标题】:Angular Detect 401 Unauthorized Access using JWT 【发布时间】:2018-08-06 04:47:40 【问题描述】:

我按照几篇文章在 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 包含

【问题讨论】:

【参考方案1】:
providers: [PagerService, AuthService,
  
    provide: HTTP_INTERCEPTORS,
    useClass: TokenInterceptor,
    multi: true
  , 
    provide: HTTP_INTERCEPTORS,
    useClass: JwtInterceptor,
    multi: true
  
]

我必须在module.app.ts 中添加多个拦截器。不要忘记在拦截器中在export class... 之前添加@Injectable()

【讨论】:

以上是关于Angular Detect 401 Unauthorized Access 使用 JWT的主要内容,如果未能解决你的问题,请参考以下文章

如何在全球范围内以最佳方式处理来自服务器的 401/403 响应

Angular 5 无法 PUT 并出现 401 错误

Angular - Spring Boot - Keycloak - 401错误

如何处理 spring security + angular 中的 401 错误?

Angular 4 和 OAuth - 拦截 401 响应,刷新访问令牌并重试请求

Angular 2 JWT AuthHttp 错误 401 未捕获