微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HttpInterceptor无法在Angular 10中拦截请求

如何解决HttpInterceptor无法在Angular 10中拦截请求

我有一个HttpInterceptor,可将本地存储中的JWT令牌添加到我的http请求的标头中。我相信我发送的所有http请求都没有任何标头,但不明白为什么它不起作用。

我想让拦截器将标头添加到我的请求中是什么?

我的拦截器:

import { Injectable,Injector } from '@angular/core';
import {HttpInterceptor} from "@angular/common/http";

@Injectable({
  providedIn: 'root'
})

export class TokenInterceptorService implements HttpInterceptor {

  constructor(private injector: Injector) { }

  intercept(req,next) {
    let tokenizedReq = req.clone({
      setHeaders: {
        Authorization: `Bearer ${localStorage.getItem('token')}`
      }
    })
    return next.handle(tokenizedReq)
  }
}

我的服务:

import { baseUrl } from "../environments/environment";
import { Injectable } from '@angular/core';
import {HttpClient} from "@angular/common/http";
import {Observable} from "rxjs";
@Injectable({
  providedIn: 'root'
})
export class AccountService {

  constructor(private http:HttpClient) { }

  getUser(data):Observable<any>{
    return this.http.post(`${baseUrl}/useraccount/user`,data);
  }

}

解决方法

您必须在ApplicationModule中注册拦截器

@NgModule({
  imports: [
    HttpClientModule
  ],exports: [],providers: [
    {provide: HTTP_INTERCEPTORS,useClass: YourInterceptorClass,multi: true},]
})
,

不久前我遇到了同样的问题,我意识到我的应用程序中有几个模块。所以把拦截器放在我试图拦截的模块中,而不是放在 app 模块中,它起作用了!

我的拦截器是这样的

@Injectable()
export class AuthInterceptor implements HttpInterceptor {
    intercept(req: HttpRequest<any>,next: HttpHandler): Observable<HttpEvent<any>> {
        req = req.clone({
            setHeaders: {
                "Content-Type": "application/json; charset=utf-8",Accept: "application/json",Authorization: `Bearer ${AuthService.getAccessTokenFromStorage()}`,},});

        return next.handle(req);
    }
}

在我的内部模块(例如,client.module)中是这样的

...
providers: [{ provide: HTTP_INTERCEPTORS,useClass: AuthInterceptor,multi: true }],...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?