在Angular中,AuthGuard用于保护路由,只允许已经登录的用户访问某些受保护的页面。如果AuthGuard阻止了使用点击访问routerLinks,可以按照以下步骤进行解决:
import { Injectable } from '@angular/core';
import { CanActivate, Router } from '@angular/router';
import { AuthService } from './auth.service';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private authService: AuthService, private router: Router) {}
canActivate(): boolean {
if (this.authService.isLoggedIn()) {
return true;
} else {
this.router.navigate(['/login']); // 如果未登录,导航到登录页面
return false;
}
}
}
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { AuthGuard } from './auth.guard';
const routes: Routes = [
{ path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard] },
// 其他路由配置...
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
进入仪表板
如果以上步骤都正确实现了,当用户未登录时,点击routerLink将会被AuthGuard拦截,并导航到登录页面。