Angular中AuthGuard路由守卫的创建使用

 更新时间:2023年07月31日 10:54:17   作者:JerryWang_汪子熙  
这篇文章主要为大家介绍了Angular中AuthGuard路由守卫的创建使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Angular中的AuthGuard

Angular 中的 AuthGuard 是一个路由守卫,它用于保护某些路由,只有当用户经过身份验证并具有访问权限时,才允许他们访问。AuthGuard 通常与路由配置一起使用,以确保用户无法直接访问需要身份验证的页面。

创建

AuthGuard 是一个 Angular 服务,可以使用以下命令来创建它:

ng g guard auth

上面的命令将生成一个名为“auth”的 AuthGuard,并将其添加到 src/app/auth.guard.ts 文件中。

auth.guard.ts 文件中的代码如下所示:

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router } from '@angular/router';
import { Observable } from 'rxjs';
import { AuthService } from './auth.service';

@Injectable({
  providedIn: 'root'
})
export class AuthGuard implements CanActivate {
  constructor(private authService: AuthService, private router: Router) {}

  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
    if (this.authService.isLoggedIn()) {
      return true;
    } else {
      this.router.navigate(['/login']);
      return false;
    }
  }
}

在上面的代码中,AuthGuard 是通过实现 CanActivate 接口来定义的。CanActivate 接口包含一个名为 canActivate() 的方法,该方法决定了当用户尝试访问受保护的路由时应该执行哪些操作。

在 AuthGuard 中,我们注入了一个名为 AuthService 的服务和 Router 对象。AuthService 用于检查用户是否已经登录,而 Router 用于导航到登录页面或者用户试图访问的页面。在 canActivate() 方法中,我们首先调用 this.authService.isLoggedIn() 方法来检查用户是否已经登录。如果用户已经登录,我们返回 true,表示用户可以访问该路由。否则,我们调用 this.router.navigate(['/login']) 方法,将用户重定向到登录页面,然后返回 false,表示用户无法访问该路由。

AuthGuard保护一个路由

要使用 AuthGuard 来保护一个路由,我们需要在路由配置中将 AuthGuard 添加到 canActivate 属性中。例如:

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { DashboardComponent } from './dashboard/dashboard.component';
import { LoginComponent } from './login/login.component';
import { AuthGuard } from './auth.guard';
const routes: Routes = [
  { path: '', component: HomeComponent },
  { path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard] },
  { path: 'login', component: LoginComponent },
];
@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

在上面的代码中,我们将 AuthGuard 添加到了 /dashboard 路由的 canActivate 属性中,这意味着只有当用户已经登录时才能访问 /dashboard 路由。

以上就是Angular中AuthGuard路由守卫的创建使用的详细内容,更多关于Angular AuthGuard创建使用的资料请关注脚本之家其它相关文章!

相关文章

  • AngularJS获取json数据的方法详解

    AngularJS获取json数据的方法详解

    这篇文章主要介绍了AngularJS获取json数据的方法,结合实例形式详细分析了AngularJS获取json数据的详细步骤、操作技巧与相关注意事项,需要的朋友可以参考下
    2017-05-05
  • 快速解决angularJS中用post方法时后台拿不到值的问题

    快速解决angularJS中用post方法时后台拿不到值的问题

    今天小编就为大家分享一篇快速解决angularJS中用post方法时后台拿不到值的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • AngularJs 动态加载模块和依赖

    AngularJs 动态加载模块和依赖

    这篇文章主要介绍了AngularJs 动态加载模块和依赖方法的相关资料,需要的朋友可以参考下
    2016-09-09
  • 关于Angular2 + node接口调试的解决方案

    关于Angular2 + node接口调试的解决方案

    这篇文章主要给大家介绍了关于Angular2 + node接口调试的解决方案,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • 微信小程序实现左右联动的实战记录

    微信小程序实现左右联动的实战记录

    联动菜单是大家在开发小程序经常会遇到的一个功能,下面这篇文章主要给大家介绍了关于微信小程序实现左右联动的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-07-07
  • Angular中使用ui router实现系统权限控制及开发遇到问题

    Angular中使用ui router实现系统权限控制及开发遇到问题

    这篇文章主要介绍了Angular中使用ui router实现系统权限控制及开发遇到问题的相关资料,本文分步骤介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • angular6.x中ngTemplateOutlet指令的使用示例

    angular6.x中ngTemplateOutlet指令的使用示例

    本篇文章主要介绍了angular6.x中ngTemplateOutlet指令的使用示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)

    Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)

    这篇文章主要给大家介绍了关于Angular 4依赖注入之FactoryProvider配置依赖对象的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • 详解AngularJS中的表格使用

    详解AngularJS中的表格使用

    这篇文章主要介绍了详解AngularJS中的表格使用,作为热门的JavaScript框架,AngularJS中提供的表格功能十分强大,需要的朋友可以参考下
    2015-06-06
  • Angular4 反向代理Details实践

    Angular4 反向代理Details实践

    本篇文章主要介绍了Angular4 反向代理Details实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05

最新评论