angular - 令牌拦截器中来自firebase用户的令牌?
问题描述
尝试从 FirebaseAuth.user.getIdToken() 获取 firebase 令牌。这是一个学校项目。我发布这个问题的原因主要是因为我注意到许多解决方案在我看来已经过时了。
https://gist.github.com/danielcrisp/ced7d092b07efa609285ba5f0823ca60
https://github.com/codediodeio/angular-firebase-stripe/blob/master/src/app/core/token.interceptor.ts
我尝试了上面链接中提供的一些解决方案,最终得到了这段代码。但它仍然无法正常工作。mergeMap 需要一个标记和一个索引。
错误我上线mergeMap((token: any, index: number) => {
错误:(27, 20) TS2345:类型为“(令牌:任意,索引:编号)=> HttpRequest”的参数不可分配给类型为“(值:任意,索引:编号)=> ObservableInput”的参数。类型“HttpRequest”不可分配给类型“ObservableInput”。“HttpRequest”类型中缺少属性“[Symbol.iterator]”,但在“Iterable”类型中是必需的。
import { Injectable } from '@angular/core';
import {HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpClient} from '@angular/common/http';
import {from, Observable} from 'rxjs';
import {AuthService} from '../services/auth.service';
import {FirebaseAuth} from '@angular/fire';
import {User} from 'firebase';
import {mergeMap, switchMap} from 'rxjs/operators';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
user: User;
subscribe_firebase_user;
constructor(private http: HttpClient, private fireAuth: FirebaseAuth) {
this.user = fireAuth.currentUser;
this.subscribe_firebase_user = this.fireAuth.onAuthStateChanged(a => {
this.user = a;
});
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
// add authorization header with jwt token if available
const observable = from(this.user.getIdToken());
if (this.user !== null) {
return observable.pipe(
mergeMap((token: any, index: number) => {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}}
);
return request;
}
));
}
return next.handle(request);
}
}
由此我希望令牌被加载,然后请求被发送到服务器。
感谢您提前提供帮助。
解决方案
推荐阅读
- vue.js - Vuejs:如何在模板中混合静态和动态内容?
- css - React Material-UI 自包含应用程序 CSS 样式
- javascript - 按整理顺序将数组数组减少到数组中
- python - 给定一个二维数组,找到其中 object[1] 等于某个字符串 x 的对象
- ios - Swift:如果加载超过 49 个声音文件,则 SwiftySound 初始化错误
- javascript - 为什么输入的值不是由 javascript 设置的?
- javascript - 如何将 ACF 字段作为类添加到 div
- python - Python将立体声.flac转换为单声道
- excel - 如果在excel中嵌套
- python - 优化线性方程以获得最大最小值