javascript - Angular5 添加 jwt 令牌
问题描述
我制作了如下所示的拦截器类:
import {Injectable} from "@angular/core";
import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from "@angular/common/http";
import {Observable} from "rxjs/Observable";
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
constructor() { }
//
intercept(req: HttpRequest<any>,
next: HttpHandler): Observable<HttpEvent<any>> {
const idToken = localStorage.getItem("token");
console.log('daniel3');
if (idToken) {
let cloned = req.clone({
setHeaders: {
Authorization: `Bearer ${idToken}`
}
});
console.log('daniel4');
return next.handle(cloned);
}
else {
console.log('daniel5');
return next.handle(req);
}
}
}
但这奇怪地只适用于一次性,意味着将 jwt 令牌添加到请求中,没有一些隐藏的魔法,因此非常欢迎任何线索。
解决方案
应用程序应该只导入一个 HttpClientModule。每次导入都会创建一个新的 HttpClient 副本,并且根模块中提供的拦截器可能会被覆盖
推荐阅读
- javascript - 为给定日期添加天数
- flutter - 运行“flutter pub get”时在 google_maps_flutter 上解决 Flutter 版本失败
- reactjs - react-hook-form 方法有哪些类型?
- ios - iOS14 iOS UI测试时开启本地网络访问
- node.js - 使用 Firebase Cloud 功能向特定用户发送通知
- database - azure 上的防火墙规则
- python - 无法使用 QTableView / 自定义表格模型设置标题数据
- python - 使用 cython 获取当前时间(以毫秒为单位)
- python - 如何遍历 Pytest 中每个变量的所有测试?
- android - 将文件从外部存储文件夹复制到具有不同文件扩展名的同一文件夹中