Sobes.tech
Back to questions
Junior — Middle
84

Можете объяснить, что такое Guards в рамках NestJS и как их используют для контроля доступа?

Answer from AI

sobes.tech 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 позволяют централизованно управлять доступом к ресурсам приложения.