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