Sobes.tech
Junior — Middle

Կարող եք բացատրել, թե ինչ են Guards-ը NestJS շրջանակում և ինչպես են դրանք օգտագործվում մուտքի վերահսկման համար:

sobes.tech AI

Պատասխան AI-ից

В NestJS Guards — это специальные классы, которые реализуют интерфейс CanActivate и используются для контроля доступа к маршрутам или методам контроллеров.

Они решают, разрешать ли выполнение запроса дальше, основываясь на логике, например, проверке авторизации, ролей пользователя или других условий.

Пример использования Guards:

import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';
import { Observable } from 'rxjs';

@Injectable()
export class AuthGuard implements CanActivate {
  canActivate(
    context: ExecutionContext,
  ): boolean | Promise<boolean> | Observable<boolean> {
    const request = context.switchToHttp().getRequest();
    return request.headers.authorization === 'valid-token';
  }
}

Далее этот Guard можно применить к контроллеру или маршруту:

@UseGuards(AuthGuard)
@Get('profile')
getProfile() {
  return { user: 'info' };
}

Таким образом Guards позволяют централизованно управлять доступом к ресурсам приложения.