canActivate method returns false. What happens to the request?import { CanActivate, ExecutionContext } from '@nestjs/common'; export class SampleGuard implements CanActivate { canActivate(context: ExecutionContext): boolean { return false; } }
When canActivate returns false, NestJS blocks the request and sends a 403 Forbidden response automatically.
canActivate that checks if the request header x-api-key equals secret.The switchToHttp().getRequest() method returns the HTTP request object. Headers are accessed as request.headers['header-name']. Option C uses this correctly.
canActivate returns Promise.resolve(false), what does NestJS do with the request?import { CanActivate, ExecutionContext } from '@nestjs/common'; export class AsyncGuard implements CanActivate { canActivate(context: ExecutionContext): Promise<boolean> { return Promise.resolve(false); } }
NestJS supports asynchronous guards. If the Promise resolves to false, the request is blocked with a 403 Forbidden response.
import { CanActivate, ExecutionContext } from '@nestjs/common'; export class BuggyGuard implements CanActivate { canActivate(context: ExecutionContext): boolean { const request = context.switchToHttp().getRequest(); if (request.headers['authorization']) { true; } return true; } }
The if block contains true; but does not return it. The function always returns true at the end, so it never blocks requests.
In NestJS, multiple guards run one after another. The request proceeds only if every guard returns true. If any guard returns false, the request is blocked.
