博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nest.js 守卫
阅读量:7053 次
发布时间:2019-06-28

本文共 963 字,大约阅读时间需要 3 分钟。

Docs:

当调用者具有足够的权限时,特定路由才可用

// app.guard.tsimport { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';import { Observable } from 'rxjs';import { Reflector } from '@nestjs/core';import * as _ from 'lodash'const l = console.log@Injectable()export class AppGuard implements CanActivate {  constructor(private readonly reflector: Reflector) { }  canActivate(    ctx: ExecutionContext,  ): boolean | Promise
| Observable
{ let roles = this.reflector.get
('roles', ctx.getHandler()) // 没有设置守卫 直接通过 if(!roles) return false; const { query: { name } } = ctx.switchToHttp().getRequest(); l(roles, name) return roles && roles.length > 0 && _.includes(roles, name) ? true : false }}
export const Roles = (...roles: string[]) => ReflectMetadata('roles', roles);@Controller()@UseGuards(AppGuard)  // 总路由上使用@Get('a')@Roles('admin')  // 为接口绑定元数据

转载于:https://www.cnblogs.com/ajanuw/p/9704427.html

你可能感兴趣的文章
Project configuration is not up-to-date with pom.xml
查看>>
查询批次上课时间
查看>>
Ext.data.Store 中 data 的克隆原理
查看>>
Linux文件内容去重
查看>>
设计模式 之 状态模式
查看>>
Java泛型(一)ArrayList和HashMap
查看>>
redis笔记 (番外篇)——从RDBMS到NoSQL的架构演化及CAP原理
查看>>
iOS中根据已有经纬度定位并显示在地图上
查看>>
Git同时使用多个 ssh key
查看>>
hdu 2501
查看>>
findbugs错误类型对照表
查看>>
Eclipse代码补全,修改 空格键 "=" 键不上屏
查看>>
01背包问题的java界面实现
查看>>
[leetcode] Permutations
查看>>
查看Android应用包名package和入口activity名称
查看>>
jquery disabled设置不可编辑
查看>>
Java Base
查看>>
mysql优化sql语句查询的方法(一)
查看>>
既然存在,就是合理的
查看>>
【GIT-1】GIT 的基础教程 创建,添加,更替,追溯版本库
查看>>