0

我正在尝试将护照 jwt 策略添加到所有以/api.

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

谢谢!

4

1 回答 1

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
  }
}
于 2020-02-26T20:49:27.810 回答