要解决“Angular AuthGuard在签出时未被调用 - Firebase Auth”的问题,您可以尝试以下解决方法:
const routes: Routes = [
{ path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard] },
// other routes...
];
import { Injectable } from '@angular/core';
import { CanActivate, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { AngularFireAuth } from '@angular/fire/auth';
import { map, take } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class AuthGuard implements CanActivate {
constructor(private afAuth: AngularFireAuth, private router: Router) {}
canActivate(): Observable {
return this.afAuth.authState.pipe(
take(1),
map(user => {
if (user) {
// 用户已经登录,可以通过验证
return true;
} else {
// 用户未登录,重定向到登录页面或其他适当的位置
this.router.navigate(['/login']);
return false;
}
})
);
}
}
export const environment = {
production: false,
firebase: {
apiKey: 'YOUR_API_KEY',
authDomain: 'YOUR_AUTH_DOMAIN',
// 其他Firebase配置...
}
};
通过检查和实施上述解决方法,您应该能够解决“Angular AuthGuard在签出时未被调用 - Firebase Auth”的问题,并且在用户签出时正确调用AuthGuard。