javascript - NestJS 在@ResolveProperty 防护中访问HTTP 请求?
问题描述
我正在使用 Nest JS 开发 Graphql API(我刚刚将其升级到 5.0.0),其中我只需要允许某些用户(按角色)访问公共查询的子部分。
import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common';
import { Reflector } from '@nestjs/core';
@Injectable()
export class RolesGuard implements CanActivate {
constructor(private readonly reflector: Reflector) {}
canActivate(context: ExecutionContext): boolean {
const req = context.switchToHttp().getRequest();
const roles = this.reflector.get<string[]>('roles', context.getHandler());
if (!roles) // if no roles specified
return true;
console.log(req); // Displays Query() parent result instead of HTTP Request Object
return false;
}
}
查询的子部分由@ResolveProperty()
修饰函数处理。
按照我开始使用Guards的文档,但我刚刚发现在使用Guards时,在GraphQL解析器上下文中,context.switchToHttp().getRequest()
它只返回父Query()的结果......
我真的不知道这是否是预期的行为,如果是,是否有办法从 GraphQL Guard 访问完整的 express Request 对象?
解决方案
推荐阅读
- sql - 没有层次结构的两表递归查找,这可能吗?
- algorithm - 为什么我的 Haskell 代码似乎无法并行运行
- python - 嵌套for循环棋盘着色不起作用Python
- python - 如何在 tkinter 中的行之间创建空格?
- python - 在两条交叉线上绘制圆圈
- ruby - 更新到 v2 后 Jekyll 中的分页错误
- php - dompdf 没有从 Laravel 8 和 Livewire 视图下载 PDF
- python - Python 环境总是在导入库后立即终止
- php - PHP getbyhostname 域代码在我的网络服务器上不起作用
- python - Pygame Zero 中的角色移动