首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏有困难要上,没有困难创造困难也要上!

    NestJS中使用Guard实现路由保护

    Guard是一个实现了CanActivate接口的类。它可以在路由处理之前执行一些逻辑,例如验证用户身份、检查权限等。如果Guard返回true,则路由处理将继续执行。 要创建一个Guard,需要创建一个实现了CanActivate接口的类。 'rxjs'; @Injectable() export class AuthGuard implements CanActivate { canActivate( context: ExecutionContext return true; } } 这里创建了一个名为AuthGuard的类,它实现了CanActivate接口。在canActivate方法中可以添加逻辑,例如验证用户身份、检查权限等。 通过创建一个实现了CanActivate接口的类,并在需要使用它的路由处理器或控制器上添加@UseGuards装饰器就可以轻松地使用Guard。

    56410编辑于 2024-09-11
  • 来自专栏草根专栏

    使用angular4和asp.net core 2 web api做个练习项目(四)

    首先建立authguard: ng g g guards/auth 代码: import { Injectable } from '@angular/core'; import { CanActivate /services/auth.service'; @Injectable() export class AuthGuard implements CanActivate { constructor ( private router: Router, private authService: AuthService ) { } canActivate(): Observable : [AuthGuard] }, { path: 'client/:id', component: ClientDetailsComponent, canActivate: [AuthGuard] : [ ClientService, AuthService, AuthGuard ], 需要权限控制的路由需要加上 canActivate属性, 它的值是一个数组可以使用多个

    2.3K100发布于 2018-03-01
  • 来自专栏程序员宇说

    Angular 从入坑到挖坑 - 路由守卫连连看

    在跳转到组件前获取某些必须的数据 离开页面时,提示用户是否保存未提交的修改 Angular 路由模块提供了如下的几个接口用来帮助我们解决上面的问题 CanActivate:用来处理系统跳转到到某个路由地址的操作 首先判断是否已经登录,如果登录后再判断当前登录人是否具有当前路由地址的访问权限 import { Injectable } from '@angular/core'; import { CanActivate { /** * ctor * @param router 路由 */ constructor(private router: Router) { } canActivate ,因为授权的逻辑很相似,这里通过多重继承的方式,扩展 AuthGuard 的功能,从而达到同时针对路由和子路由的路由守卫 改造下原先 canActivate 方法的实现,将认证逻辑修改为用户的 token : [AuthGuard], // 添加针对当前路由的 canActivate 路由守卫 children: [{ path: '', canActivateChild:

    5.3K30发布于 2020-06-04
  • 来自专栏寻找石头鱼

    Angular4.x通过路由守卫进行路由重定向,实现根据条件跳转到相应的页面

    RegisterComponent }, { path: 'my', component: MyComponent }, { path: 'login', component: LoginComponent, canActivate : [RouteguardService] },//canActivate就是路由守卫 { path: '', redirectTo: '/home', pathMatch: 'full' } ] import { Injectable, Inject } from "@angular/core"; import { DOCUMENT } from "@angular/common"; import { CanActivate /user.model"; @Injectable() export class RouteguardService implements CanActivate { constructor( private router: Router, @Inject(DOCUMENT) private document: any) { } canActivate(route: ActivatedRouteSnapshot

    1.8K40发布于 2019-08-20
  • 来自专栏贺贺的前端工程师之路

    Angular2 之 路由与导航基础知识路由模块组件路由路由守卫

    路由器支持多种守卫 用CanActivate来处理导航到某路由的情况。 用CanActivateChild处理导航到子路由的情况。 用CanDeactivate来处理从当前路由离开的情况。 然后它会按照从上到下的顺序检查CanActivate守卫。 如果任何守卫返回false,其它尚未完成的守卫会被取消,这样整个导航就被取消了。 CanActivate 使用CanActivate来处理导航路由,需要在路由配置中,添加导入AuthGuard类,修改管理路由并通过CanActivate属性来引用AuthGuard。 而AuthGuard 类是需要继承CanActivate 类的:export class AuthGuard implements CanActivate {} import { AuthGuard } CanActivateChild守卫的工作方式和CanActivate守卫很相似,不同之处在于它会在每个子路由被激活之前运行。我们保护了管理特性模块不受未授权访问,也同样可以在特性模块中保护子路由。

    4.9K10发布于 2018-08-21
  • 来自专栏前端加油站

    angular4实战(2) router

    /stones/stones.module#StonesModule', canActivate: [Auth]}, {path: '', redirectTo: '/login', pathMatch /stones/stones.module#StonesModule', canActivate: [Auth]}, 路由守卫 业务需求是在没有登录的情况下,是不允许跳入到下一个页面的。 用CanActivate来处理导航到某路由的情况。 用CanDeactivate来处理从当前路由离开的情况. login.Auth.ts: “` import {Injectable} from ‘@angular/core’; import {Router, CanActivate} from ‘@angular /service/noty/noty.service’; @Injectable() export class Auth implements CanActivate { constructor

    1K30发布于 2019-07-02
  • 来自专栏挖坑填坑

    使用.net core ABP和Angular模板构建博客管理系统(创建前端菜单及页面)

    AppComponent, children: [ { path: 'home', component: HomeComponent, canActivate { path: 'users', component: UsersComponent, data: { permission: 'Pages.Users' }, canActivate { path: 'roles', component: RolesComponent, data: { permission: 'Pages.Roles' }, canActivate { path: 'tenants', component: TenantsComponent, data: { permission: 'Pages.Tenants' }, canActivate

    1.3K20发布于 2018-08-21
  • 来自专栏前端导学

    ionic4初级教程-含登录、访问权限验证功能

    } }); } } 设置 auth-guard.service.ts文件 import { Injectable } from '@angular/core'; import { CanActivate authentication.service'; @Injectable({ providedIn: 'root' }) export class AuthGuardService implements CanActivate { constructor(private authService: AuthenticationService) { } canActivate(): boolean { return /public/register/register.module#RegisterPageModule' }, { path: 'members', canActivate: [AuthGuardService

    2.9K20发布于 2019-05-28
  • 来自专栏前端笔记ing

    Nest.js JWT 验证授权管理

    如何创建一个 Guard我们可以通过 nest 指令 来快速创建一个 Guardnest g gu guard/auth每个守卫 必须实现 CanActivate类,必须实现一个canActivate( canActivate() 函数接收单个参数 ExecutionContext 实例。ExecutionContext 继承自 ArgumentsHost 。 import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';import { Observable } from 'rxjs';@Injectable()export class RoleGuard implements CanActivate { canActivate( context: ExecutionContext 实例化 jwtService constructor(private jwtService: JwtService, private reflector: Reflector) {} async canActivate

    2.3K21编辑于 2023-11-01
  • 来自专栏Angular学习规划

    Angular核心-路由和导航

    使用路由守卫的步骤 1.创建路由守卫class //声明可被注入的 @injectable({providedln:'root'}) export class LoginGuard{ canActivate ,canActivate:[LoginGuard]} 实例: 声明路由词典-路由地址和路由组件的对应集合 //声明路由词典-路由地址和路由组件的对应集合 let routes = [ {path: full'}, {path:'index',component:IndexComponent}, {path:'index', component:IndexComponent, canActivate 使用ng g guard time创建路由守卫并编辑 @Injectable({ providedIn: 'root' }) export class TimeGuard implements CanActivate { constructor(private router:Router){ } //如果当前的访问时间是6-23点允许激活 //否则阻止 canActivate(){

    3.3K20编辑于 2022-06-30
  • 来自专栏h5

    angular聊天IM实例|仿微信angular版|NG2案例

    bootstrap: [AppComponent] }) export class AppModule { } /* * angular路由守卫(验证token) */ import { Router, CanActivate } from '@angular/router' declare var wcPop: any; export class Auth implements CanActivate{ constructor (private router: Router){} canActivate(){ let that = this // 验证token const

    4.2K40发布于 2019-07-16
  • 来自专栏图雀社区

    Nest.js 从零到壹系列(八):使用 Redis 实现登录挤出功能

    这里本来想新建一个 token.guard.ts 的,但后面感觉每个路由又全加一遍,很麻烦,故直接调整 rbac.guard.ts: // src/guards/rbac.guard.ts - import { CanActivate , ExecutionContext, Injectable, ForbiddenException } from '@nestjs/common'; + import { CanActivate, ExecutionContext /database/redis'; @Injectable() export class RbacGuard implements CanActivate { // role[用户角色]: 0-超级管理员 | 1-管理员 | 2-开发&测试&运营 | 3-普通用户(只能查看) constructor(private readonly role: number) {} async canActivate Bearer xxx + // 获取 redis 里缓存的 token + const redis = await RedisInstance.initRedis('TokenGuard.canActivate

    2.9K63发布于 2020-07-28
  • 来自专栏CRPER折腾记

    Angular 2 + 折腾记 :(4)初步了解路由及使用

    redirectTo: '/page/dashboard/vehicle-overview', pathMatch: 'full', // 匹配全局,默认是'prefix','full'是全局匹配/ canActivate : [RbacService] // canActivate是内置拦截器,RbacService是鉴权服务 }, { path: 'page', component: MitLayoutComponent , canActivate: [RbacService], children: [ // 懒加载在目前的版本都必须用绝对路径指向对应的模块,dashboard.module是文件名,#DashboardModule

    3.7K20发布于 2018-08-28
  • Angular 17 新特性深度解析:独立组件 + 信号系统实战

    :与现有 RxJS 管道/服务融合,逐步迁移到 Signals 推模式 路由与懒加载(无 NgModule) 使用 provideRouter + loadComponent,组件直接懒加载 可结合 canActivate /dashboard.component').then(m => m.DashboardComponent), canActivate: [() => true] } ] 表单与模板中的信号 模板中访问信号值使用调用形式 :与现有 RxJS 管道/服务融合,逐步迁移到 Signals 推模式 路由与懒加载(无 NgModule) 使用 provideRouter + loadComponent,组件直接懒加载 可结合 canActivate /dashboard.component').then(m => m.DashboardComponent), canActivate: [() => true] } ] 表单与模板中的信号 模板中访问信号值使用调用形式

    16710编辑于 2025-12-15
  • 来自专栏小鑫同学编程历险记

    快速打开 Nestjs 的世界

    使用 CLI 命令nest g guard roles或简写命令nest g gu roles 创建一个与角色相关的守卫: import { CanActivate, ExecutionContext, nestjs/common'; import { Observable } from 'rxjs'; @Injectable() export class RolesGuard implements CanActivate { canActivate( context: ExecutionContext, ): boolean | Promise<boolean> | Observable<boolean this.catsService.create(cat); } 完善守卫 通过Reflector接续处理函数所分配的角色并与请求头中所携带的角色相比较,决定是否允许控制器处理函数执行: import { CanActivate { constructor(private reflector: Reflector) {} canActivate(context: ExecutionContext): boolean

    1.7K10编辑于 2023-12-04
  • 来自专栏山行AI

    vue之router文档

    这是通过调用路由配置阶段的 canDeactivate 和 canActivate 钩子函数来判断的。 ? 注意, canDeactivate 按照从下至上的冒泡顺序检查,而 canActivate 则是从上之下。任何一个钩子函数都可以终止界面切换。 需要注意的是,验证类钩子,比如 canActivate, canDeactivate 和 canReuse 在合并选项时会直接被新值覆盖。 canActivate(transition)[->Promise|Boolean] 在验证阶段,当一个组件将要被切入的时候被调用。 子级组件视图的 canActivate 钩子仅在父级组件的 canActivate 被断定( resolved )之后调用。

    6.1K30发布于 2019-07-25
  • 来自专栏草根专栏

    使用Identity Server 4建立Authorization Server (6) - js(angular5) 客户端

    所以我在几乎最外层添加了这个authguard, 里面的代码是: import { Injectable } from '@angular/core'; import { CanActivate } from 'rxjs/Observable'; import 'rxjs/add/operator/map'; @Injectable() export class AuthGuard implements CanActivate constructor( private router: Router, private authService: AuthService) { } canActivate login-callback', component: LoginCallbackComponent }, { path: '', component: MainComponent, canActivate

    6.3K50发布于 2018-03-01
  • 来自专栏随心分享

    BFF与Nestjs实战

    所以通常情况下我们会封装一个全局的路由守卫,我们在项目的common/guards目录下新建auth.guard.ts,代码如下: auth.guard.ts import {Injectable, CanActivate Observable} from 'rxjs'; function validateRequest(req) { return true; } // 守卫需要@Injectable()修饰而且需要继承CanActivate @Injectable() export class AuthGuard implements CanActivate { // 守卫必须有canActivate方法,此方法返回值类型为boolean canActivate( context: ExecutionContext, ): boolean | Promise<boolean> | Observable<boolean

    3.5K10编辑于 2022-11-19
  • 来自专栏w候人兮猗的博客

    基于Nest快速构建Web应用

    基于守卫封装授权守卫,用于校验是否需要登录才可访问资源 # /guard/auth.guard.ts @Injectable() export class AuthGuard implements CanActivate { constructor(private readonly jwtService: JwtService) {} async canActivate(context: ExecutionContext

    2.1K10发布于 2020-12-22
  • 来自专栏前端侠2.0

    Angular技巧汇总 原

    这里用到两个技术:    1、解析路由守卫,参考官方文档,   路由守卫有三种:      激活守卫CanActivate :  在函数返回true时,才能进入路由页面。      

    85720发布于 2018-09-21
领券