iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >分析Angular路由守卫Route Guards
  • 416
分享到

分析Angular路由守卫Route Guards

2024-04-02 19:04:59 416人浏览 泡泡鱼
摘要

这篇文章主要介绍“分析angular路由守卫Route Guards”,在日常操作中,相信很多人在分析Angular路由守卫Route Guards问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方

这篇文章主要介绍“分析angular路由守卫Route Guards”,在日常操作中,相信很多人在分析Angular路由守卫Route Guards问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析Angular路由守卫Route Guards”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

分析Angular路由守卫Route Guards

环境:

  • Angular CLI: 11.0.6

  • Angular: 11.0.7

  • node: 12.18.3

  • npm : 6.14.6

  • IDE: Visual Studio Code

在我们的实际的业务开发过程中,我们经常会遇到如下需求:

  • 需要限制某些 URL 的可访问性,例如,对于系统管理界面,只有那些拥有管理员权限的用户才能打开。

  • 当用户处于编辑界面时,在没有保存就离开时,需要提示用户是否放弃修改。

针对以上场景,Angualr使用路由守卫(Route Guards)来实现。

路由守卫(Route Guards)

1. 创建路由守卫

Angular CLI提供了命令行工具,可以快速创建路由守卫框架文件:ng generate guard auth。 执行后,Angular CLI会问我们需要实现哪些接口,我们直接勾选即可:

? Which interfaces would you like to implement? (Press <space> to select, <a> to toggle all, <i> to invert selection)
>(*) CanActivate
 ( ) CanActivateChild
 ( ) CanDeactivate
 ( ) CanLoad

说明:

  • CanActivate: 控制路由是否可以激活

  • CanActivateChild: 控制子路由是否可以激活

  • CanDeactivate: 控制路由是否可以退出

  • CanLoad: 控制模块(module)是否可以被加载

比较经常使用的是1、3,分别控制进入和退出。 按照上面配置,AngularCLI自动生成如下代码,return true; 替换为我们实际的代码即可。return false; 表示不允许跳转,或者取消离开当前页面。

// auth.guard.ts
import { Injectable } from '@angular/core';
import { CanActivate, CanDeactivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class AuthGuard implements CanActivate, CanDeactivate<unknown> {
  canActivate(
    route: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
    return true;
  }
}

在canActivate方法中,我们还可以使用跳转。如页面判断是否已经登录,如果没有登录,跳转到Login页面:

this.router.navigate(['/login']);
return false;

2. 控制路由是否可以激活

控制路由是否可以激活,需要定义在定义路由的地方,增加canActivate属性。如果需要,还可以增加data属性, 比如告诉我们的AuthGuard进入当前路由需要验证哪些权限。data属性是可选的。

const routes: Routes = [
  {
    path: "page1",
    component: Page1Component,
    data: { permissions: ['YourPage1Permission'] },  // 传入参数给AuthGuard,可选
    canActivate: [AuthGuard]
  },
  {
    path: "page2",
    component: Page2omponent,
    data: { permissions: ['YourPage2Permission'] },  // 传入参数给AuthGuard,可选
    canActivate: [AuthGuard]
  }
]

3. 控制路由是否退出(离开)

和控制路由是否可以激活类似,在路由定义出增加 canDeactivate,并制定相应的Guard守卫即可。这里不再举例

到此,关于“分析Angular路由守卫Route Guards”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 分析Angular路由守卫Route Guards

本文链接: https://www.lsjlt.com/news/85058.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 分析Angular路由守卫Route Guards
    这篇文章主要介绍“分析Angular路由守卫Route Guards”,在日常操作中,相信很多人在分析Angular路由守卫Route Guards问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2024-04-02
  • 如何分析Vue router路由守卫
    本篇文章给大家分享的是有关如何分析Vue router路由守卫,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、全局前置beforeEach当 Local Stora...
    99+
    2023-06-22
  • Angular中路由守卫的使用示例
    这篇文章主要介绍了Angular中路由守卫的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、路由守卫当用户满足一定条件才被允许进入或者离开一个路由。路由守卫场景:只...
    99+
    2023-06-06
  • Angular中Route路由的示例分析
    这篇文章主要介绍Angular中Route路由的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Angular 路由(Route)我们可以将路由器理解成控制整个应用状态的视图对象, 每个应用都有一个路由器; 路...
    99+
    2023-06-14
  • Vue路由守卫之路由独享守卫如何实现
    这篇文章主要介绍了Vue路由守卫之路由独享守卫如何实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。路由独立守卫,顾名思义就是这个路由自己的...
    99+
    2024-04-02
  • Vue路由导航守卫的示例分析
    这篇文章将为大家详细讲解有关Vue路由导航守卫的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念:“导航”表示路由正在发生变化vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫...
    99+
    2023-06-22
  • 如何解决vue路由守卫及路由守卫无限循环问题
    这篇文章主要介绍了如何解决vue路由守卫及路由守卫无限循环问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先贴一波官方文档的内容const...
    99+
    2024-04-02
  • vue路由守卫及路由守卫无限循环问题怎么解决
    这篇“vue路由守卫及路由守卫无限循环问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue路由守卫及路由守卫无限...
    99+
    2023-07-04
  • Vue router 路由守卫详解
    目录一、全局前置beforeEach1.全局前置beforeEach2.实现二、需求二三、全局后置守卫afterEach1.修改title为自己的title四、组件内守卫1.befo...
    99+
    2024-04-02
  • react路由守卫的实现(路由拦截)
    react不同于vue,通过在路由里设置meta元字符实现路由拦截。在使用 Vue ,框架提供了路由守卫功能,用来在进入某个路有前进行一些校验工作,如果校验失败,就跳转到 404 或...
    99+
    2024-04-02
  • Vue中路由守卫怎么用
    小编给大家分享一下Vue中路由守卫怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.全局守卫1.1 全局前置守卫顾名思义,前置守卫主要是在你进行路由跳转之前根据你的状态去 进行一系列操作(全局前置是为在路由初始化以及...
    99+
    2023-06-21
  • Vue路由守卫案例代码
    目录Vue路由守卫全局路由守卫全局前置守卫全局后置守卫实例代码:独享守卫组件内守卫总结Vue路由守卫 路由守卫,简单理解来说就是,当用户要进行一些操作时,我需要用户的一些信息或数据或...
    99+
    2023-02-02
    Vue路由守卫 Vue路由
  • VueRouter路由守卫超详细介绍
    目录全局前置&后置路由守卫独享路由守卫组件内路由守卫全局前置&后置路由守卫 router/index.js import Vue from 'vue'; import...
    99+
    2023-01-28
    Vue Router路由守卫 Vue 路由守卫
  • Flutter路由守卫拦截的实现
    目录为什么要使用路由Flutter路由守卫拦截的实现一、路右表管理二、实现路由守卫为什么要使用路由 在之前我们的代码中,页面跳转使用的代码如下所示: Navigator.of(con...
    99+
    2024-04-02
  • vue-router的路由守卫是什么
    这篇文章主要介绍“vue-router的路由守卫是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue-router的路由守卫是什么”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • Vue Router4路由导航守卫实例全面解析
    目录前言一、什么是导航守卫二、全局前置守卫可选的第三个参数 next三、全局解析守卫四、全局后置钩子五、路由独享的守卫六、组件内的守卫可用的配置 API使用组合 API七、...
    99+
    2022-11-16
    Vue Router4路由导航 Vue Router
  • 一文浅析Vue中的路由和多种守卫
    4.多级路由在配置路由规则的以及路由里面进行配置下一级路由使用children:[ { } ]这种形式 routes: [{ path: '/about', compon...
    99+
    2023-05-14
    Vue
  • vue全局路由守卫如何使用
    在vue中使用全局路由守卫的方法:1.新建项目,安装vue-router;2.引入vue和vue-router;3.使用Vue.use注册路由;4.定义和配置路由;5.执行代码使用全局路由守卫;具体步骤如下:首先,新建一个html项目,并在...
    99+
    2024-04-02
  • vue3中的路由守卫怎么使用
    这篇文章主要介绍“vue3中的路由守卫怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3中的路由守卫怎么使用”文章能帮助大家解决问题。路由守卫有哪几种?路由守卫(导航守卫)分为三种:全局...
    99+
    2023-07-06
  • angular9中路由守卫的使用方法
    小编给大家分享一下angular9中路由守卫的使用方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!路由守卫是什么任何用户都能在任何时候导航到任何地方。但有时候出...
    99+
    2023-06-14
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作