首页 > 其他分享 >angular 16 路由守卫更新

angular 16 路由守卫更新

时间:2024-01-25 09:22:58浏览次数:35  
标签:CanDeactivateFn const 16 守卫 inject router angular 路由

在 angular16 中守卫使用方式进行了更新,route 守卫被弃用(取消了CanActivate的使用),新增了功能性守卫(CanActivateFn),支持 inject 注入,官网提供了一个新的类型

export declare type CanDeactivateFn<T> = (component: T, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState: RouterStateSnapshot) => Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;

 

1.使用ng g g /guard/xxxx 命令生成guard文件

import {inject} from '@angular/core';
import {
  CanDeactivateFn,
  Router,
} from '@angular/router';

export const PermissionsGuard: CanDeactivateFn<any> = () => {
  const router = inject(Router) //注入需要使用的服务
  if (router.url === '/business-module') {
    console.log("无权限访问,请重新登录");
    router.navigate(['/login']);
    return false
  } else {
    return true
  }
}

2.在路由文件中,使用方式与angular 其他版本无差别,无需关注

const routes: Routes = [
  {
    path: 'business-module',
    component: PermissionsComponent,
    canActivate: [PermissionsGuard] //使用方式
  },
];

 

标签:CanDeactivateFn,const,16,守卫,inject,router,angular,路由
From: https://www.cnblogs.com/liyfya/p/17986313

相关文章

  • Ybt 金牌导航 6.1.H. 时空旅行 / P5416 [CTSC2016] 时空旅行(线段树分治+凸包)
    题意简述初始有版本\(0\),其中仅包含点\(0\),且\(c_0\)给出,\(x_0=0\)。对于第\(i\)个版本,它依赖第\(fr_i\)个版本,而且会在父级版本的基础上进行以下两种操作之一:插入一个新点,并且会给出\(x_i\)和\(c_i\)。删除一个本就存在的点(不为\(0\))给出\(m\)次询问,每次给出......
  • thinkphp 资源路由
    资源路由usethink\facade\Route;//资源路由thinkphp提供了一个命令方便开发者快速生成一个资源控制器//执行phpthinkmake:controllerBlogBlog是控制器类文件名字//标识index类型get路由blog//标识create类型get路由blog/create//标识save类型......
  • thinkphp 路由分组 url生成
    路由分组route/app.php//路由分组相同规则的路由方一起分组//Route::group('blog',function(){//Route::rule(':id','blog/index');//Route::rule('index','blog/login');//});//或者//Route::group(function(){/......
  • 重写SpringCloudGateway路由查找算法,性能提升100倍!
    如果你也在做SpringCloudGateway网关开发,希望这篇文章能给你带来一些启发背景先说背景,某油项目,通过SpringCloudGateway配置了1.6万个路由规则,实际接口调用过程中,会偶现部分接口从发起请求到业务应用处理间隔了大概5秒的时间,经排查后发现是SpringCloudGateway底层在查找对应的R......
  • thinkphp 路由参数 域名 miss设置
    路由的使用在route/app.php文件里设置路由usethink\facade\Route;//rule()//还有其他的快捷方式Route::GETPOSTPUTDELETEPATCHHEADOPTIONSANY//Route::rule('index/:id','Login/index','GET|POST')->https();//Route::get('index/:......
  • 寒假生活指导16
    importrequestsurl='http://www.baidu.com'response=requests.get(url=url)#一个类型和六个属性#Response类型print(type(response))#设置响应的编码格式response.encoding='utf-8'#以字符串的形式来返回了网页的源码print(response.text)#返回一......
  • Ybt 金牌导航 6.3.A. 区间众数 / P4168 [Violet] 蒲公英(分块)
    题意简述多次查询区间\([l,r]\)的众数,若有多个取数值最小的。强制在线。\(n\le4\times10^4,m\le5\times10^4\)。分析考虑分块。首先预处理出块区间内的众数\(maj_{l,r}\)和每种数在某个块的前缀的出现次数\(cnt_{i,a_i}\),时空复杂度都是\(O(n\sqrtn)\)的。对于询......
  • day25 代码随想录算法训练营 216. 组合总和 III
    题目:216.组合总和III我的感悟:还是按照之前的套路来。多了一个参数path_sum应该是有两处剪枝,1处横线剪枝,1处纵向剪枝?或者说1处求和剪枝?1处范围剪枝?【疑问】理解难点:不剪枝的已经模的差不多了,剪枝的再看看 自己听了一遍写的:[未剪枝]classSolution:defcombina......
  • TPLINK路由器重启脚本(软件版本3.0.0)
    ​ 家中的两个路由器全都是TPLink路由器,由于总出现时间一长就网卡的原因,写了这个重启脚本在每天凌晨五点的时候对路由器进行自动重启使用方法:​ self.logindata的值为登录时的json数据​ 打开F12控制台,复制登陆的json数据包并填入self.logindataimportrequestsfromdatet......
  • 华为二层交换机与路由器对接上网配置实验
    二层交换机与路由器对接上网配置示例组网图形图1二层交换机与路由器对接上网组网图二层交换机简介配置注意事项组网需求配置思路操作步骤配置文件相关信息二层交换机简介二层交换机指的是仅能够进行二层转发,不能进行三层转发的交换机。也就是说仅支持二层特性,不支持......