HTTP拦截器缓存以前用户的Firebase IdToken

时间:2018-03-05 01:47:27

标签: angular firebase firebase-authentication

我试图获取IdToken并通过HttpInterceptor自动将其应用于标头,但由于某种原因,它获得了之前登录的用户令牌。如果应用程序被删除并重新安装,则在您第一次注册用户时它不起作用,并且仅在第二次注册时起作用,但它再次使用先前用户的令牌。这是我的代码:

export class TokenInterceptor implements HttpInterceptor {

    IdToken: string;
    authState: any;

    constructor(public afAuth: AngularFireAuth) {
        this.afAuth.auth.onAuthStateChanged(user => 
        {
            this.authState = user;

            user.getIdToken(true).then((idToken => 
            {
                this.IdToken = idToken;
            }));
        });
    }

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

        request = request.clone({
            setHeaders: {
                'Authorization': this.IdToken
            }
        });

        return next.handle(request);
    }
}

据我所知,getIdToken(true)应该刷新它,但看起来它不在这里工作。

0 个答案:

没有答案