Nest.js: добавьте стратегию паспорта ко всем маршрутам

Я пытаюсь добавить стратегию паспорта jwt ко всем маршрутам, начинающимся с /api.

Я не могу найти в документации ни одного примера этого. Я не хочу добавлять@UseGuards декоратор в каждой конечной точке.

Благодарность!

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
  }
}
Другие вопросы по тегам