Nest.js:将通行证策略添加到所有路线

时间:2020-02-25 22:59:52

标签: nestjs nestjs-passport

我正在尝试将护照jwt策略添加到所有以/api开头的路线。

我在文档中找不到任何示例。我不想在每个端点中添加@UseGuards装饰器。

谢谢!

1 个答案:

答案 0 :(得分:1)

不可能立即将警卫仅绑定到特定路由,但是有可能在警卫中添加一些逻辑以检查您是否在特定路由中(或没有)并运行逻辑(或短路)。也许像

@Injectable()
export class APIGuard implements CanActivate {

  canActivate(context: ExecutionContext): boolean | Promise<boolean> | Observable<boolean> {
    const req = context.switchToHttp().getRequest();
    if (!req.url.contains('api')) {
      return true;
    }
    const isValid = this.checkValidity(context);
    return isValid;
  } 

  private isvalid(context: ExecutionContext) {
    // do your logic. Only brought to a separate method to keep the `canActivate` cleaner
  }
}