首页 > 解决方案 > 在 NestJS 中,有没有办法将数据从 Guards 传递到控制器?

问题描述

所以我目前在我的组织中广泛使用 NestJS。出于身份验证的目的,我们使用自己的警卫。所以我的问题是,如果有任何方法可以将数据从警卫传递到控制器,除了response.localsexpressjs,任何人都可以指导我吗?这是对框架的硬依赖,我现在不希望这样。

TIA。

标签: javascriptexpressnestjsfastify

解决方案


将数据从 Guard 传递到 Controller 的唯一方法是将数据附加到请求的字段或使用某种元数据反射,这可能变得比它的价值更具挑战性。

在你的保护下,你可以有一个canActivate

canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {
  const req = context.switchToHttp().getRequest();
  if (/* some logic with req */) {
    req.myData = 'some custom value';
  }
  return true;
}

req.myData然后在您的控制器中,您可以拉回some custom value绳子。


推荐阅读