Angular-拦截器服务未向请求添加授权标头

时间:2020-06-04 22:04:36

标签: interceptor angular-http-interceptors

我创建了一个拦截器服务,该服务应在请求中添加一个Authorization标头,以下是代码。

import { Injectable, Injector } from '@angular/core';
import { HttpInterceptor } from '@angular/common/http'
import { CarsdetailsService } from './services/carsdetails.service';

@Injectable({
  providedIn: 'root'
})
export class TokenInterceptorService implements HttpInterceptor {

  constructor(private injector: Injector) { }

  intercept(req, next){
    let userService = this.injector.get(CarsdetailsService);
    if(userService.userLoggedIn()){
      req = req.clone({
      setHeaders: {
        Authorization: `Bearer ${userService.getUserToken()}`,
      }
    });
  }
    return next.handle(req);

  }
}

以下是CarsdetailsS​​ervice中的一段代码,用于检查是否设置了令牌并返回了令牌。

userLoggedIn(){
    return !!localStorage.getItem('usertoken');
  }

  getUserToken(){
    return localStorage.getItem('usertoken');
  }

我已经在app.module.ts中注册了拦截器服务

 providers: [
    CarsdetailsService,
    CookieService,
    UserauthGuard,
    {
      provide: HTTP_INTERCEPTORS,
      useClass: TokenInterceptorService,
      multi: true
    }
  ]

我将令牌存储在本地存储中。 enter image description here

但是,当我提交请求时,在网络下看不到Authorization标头。 enter image description here

有人可以帮助我解决我在这里犯的错误吗?

此外,由于我正在app.module.ts中注册拦截器服务,因此它将为每个请求发送授权标头。如果我只想通过“预订”之类的一个请求将其发送,该在哪里注册?

谢谢, SUBBU。

0 个答案:

没有答案