分析Angular路由守衛RouteGuards

這篇文章主要介紹“分析Angular路由守衛Route Guards”,在日常操作中,相信很多人在分析Angular路由守衛Route Guards問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”分析Angular路由守衛Route Guards”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

創新互聯公司是一家專業提供德興企業網站建設,專注與網站制作、成都網站設計、HTML5建站、小程序制作等業務。10年已為德興眾多企業、政府機構等服務。創新互聯專業網站制作公司優惠進行中。

分析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”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注創新互聯網站,小編會繼續努力為大家帶來更多實用的文章!

標題名稱:分析Angular路由守衛RouteGuards
新聞來源:http://m.kartarina.com/article34/pppgpe.html

成都網站建設公司_創新互聯,為您提供商城網站自適應網站網站建設微信小程序網站改版ChatGPT

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設公司
主站蜘蛛池模板: 伊人久久无码精品中文字幕| 亚洲AV无码乱码在线观看| 无码中文字幕人妻在线一区二区三区| 亚洲精品无码不卡| 一区二区三区无码高清视频| 国产在线拍揄自揄拍无码| 亚洲AV永久无码天堂影院| 无码日韩人妻AV一区免费l| 69ZXX少妇内射无码| 亚洲Av无码乱码在线观看性色| 一本大道东京热无码一区| 日韩综合无码一区二区| YY111111少妇无码理论片| 亚欧无码精品无码有性视频| 日韩亚洲AV无码一区二区不卡| 无码精品人妻一区| 成年男人裸j照无遮挡无码| 麻豆精品无码国产在线果冻| 亚洲日韩中文字幕无码一区 | 久久久久亚洲AV片无码下载蜜桃 | 免费看又黄又无码的网站| 国产精品无码久久综合网| 亚洲欧洲免费无码| 亚洲中文字幕无码av在线| 精品日韩亚洲AV无码一区二区三区| 日韩精品无码久久一区二区三| 亚洲AV无码AV日韩AV网站| 精品人妻系列无码天堂| 免费无码又爽又刺激高潮视频| 中文字幕人妻无码一夲道 | 亚洲中文字幕无码久久精品1 | 亚洲AV无码专区亚洲AV桃| 日韩免费无码一区二区三区| 亚洲va中文字幕无码久久| 无码人妻精品一区二区三区久久 | 蜜臀亚洲AV无码精品国产午夜. | 免费无码不卡视频在线观看| 无码毛片AAA在线| 精品无码久久久久国产动漫3d| 色综合AV综合无码综合网站| 日韩人妻无码精品一专区|