角度,用户在登录时进行身份验证,但不路由到仪表板.删除身份验证有效



我是 angular 的新手,如果用户进行身份验证,我会花大约 2 到 3 个小时在线尝试从登录导航到仪表板。如果我不允许用户激活,我可以路由到仪表板:[身份验证卫士]。但是,一旦我添加了canActivate:[AuthGuard],我就被困在登录页面上(尽管我在Firebase控制台上看到了用户登录(。它只是没有将我导航到仪表板页面

我的代码..

app-routing.module.ts

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { DashboardComponent } from './components/dashboard/dashboard.component';
import { AuthGuard } from './shared/guard/auth.guard';
//import { SecureInnerPagesGuard } from "./shared/guard/secure-inner-pages.guard.ts.guard";
//import { HomeComponent } from './components/home/home.component';
import { SignInComponent } from './components/sign-in/sign-in.component';
import { from } from 'rxjs';
const routes: Routes = [
{ path: '', redirectTo: '/sign-in', pathMatch: 'full'},
{ path:  'sign-in',component:  SignInComponent},
{ path:  'dashboard', component:  DashboardComponent, canActivate: [AuthGuard] },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }

auth.guard.ts

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs';
import { AuthService } from  '../../auth/auth.service';
import { Router } from '@angular/router';
@Injectable({
providedIn: 'root'
})
export class AuthGuard implements CanActivate {
constructor(
public authService: AuthService,
public router: Router
){ }
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
if(this.authService.isLoggedIn !== true) {
this.router.navigate(['sign-in']);
}
return true;
}
}

我还在 app.module.ts 的提供程序中添加了 [AuthGuard] 任何帮助将不胜感激

看起来您的 if(this.authService.isLoggedIn !== true( 条件返回 true,并且您的应用程序导航到路由sign-in。 检查登录成功时this.authService.isLoggedIn是否变为 true。

此外,您不需要if(this.authService.isLoggedIn !== true)只需使用if(!this.authService.isLoggedIn)即可。