Challenge - 5 Problems
NestJS Guard Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate2:00remaining
What does this guard do when canActivate returns false?
Consider a NestJS guard where the
canActivate method returns false. What happens to the request?NestJS
import { CanActivate, ExecutionContext } from '@nestjs/common'; export class SampleGuard implements CanActivate { canActivate(context: ExecutionContext): boolean { return false; } }
Attempts:
2 left
💡 Hint
Think about what returning false from a guard means in NestJS.
✗ Incorrect
When canActivate returns false, NestJS blocks the request and sends a 403 Forbidden response automatically.
📝 Syntax
intermediate2:00remaining
Which option correctly implements canActivate to allow only requests with a header 'x-api-key' equal to 'secret'?
Choose the correct implementation of
canActivate that checks if the request header x-api-key equals secret.Attempts:
2 left
💡 Hint
Use the correct method to get the HTTP request and access headers as an object.
✗ Incorrect
The switchToHttp().getRequest() method returns the HTTP request object. Headers are accessed as request.headers['header-name']. Option C uses this correctly.
❓ state_output
advanced2:00remaining
What is the output when canActivate returns a Promise resolving to false?
If
canActivate returns Promise.resolve(false), what does NestJS do with the request?NestJS
import { CanActivate, ExecutionContext } from '@nestjs/common'; export class AsyncGuard implements CanActivate { canActivate(context: ExecutionContext): Promise<boolean> { return Promise.resolve(false); } }
Attempts:
2 left
💡 Hint
NestJS supports async guards returning Promise.
✗ Incorrect
NestJS supports asynchronous guards. If the Promise resolves to false, the request is blocked with a 403 Forbidden response.
🔧 Debug
advanced2:00remaining
Why does this guard always allow requests even when it should block some?
Identify the bug in this guard code that causes it to always allow requests.
NestJS
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; } }
Attempts:
2 left
💡 Hint
Look carefully at the if block and what it returns.
✗ Incorrect
The if block contains true; but does not return it. The function always returns true at the end, so it never blocks requests.
🧠 Conceptual
expert2:00remaining
Which statement about canActivate guards is true?
Select the true statement about the behavior of multiple guards applied to a single route in NestJS.
Attempts:
2 left
💡 Hint
Think about how multiple guards combine their results.
✗ Incorrect
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.