What is the purpose of token generation in NestJS?
Token generation creates a secure string (token) that represents a user's identity. It helps the server recognize and authorize users without needing to store session data.
Click to reveal answer
beginner
Which NestJS package is commonly used for JWT token generation and validation?
The @nestjs/jwt package is commonly used to generate and validate JSON Web Tokens (JWT) in NestJS applications.
Click to reveal answer
intermediate
What is the role of a secret key in token generation and validation?
The secret key signs the token to ensure it is authentic. During validation, the server uses the same secret to verify the token was not changed or forged.
Click to reveal answer
intermediate
How does token validation work in NestJS?
Token validation checks if the token is correctly signed and not expired. If valid, it extracts user info from the token to allow access to protected routes.
Click to reveal answer
intermediate
What is the difference between access tokens and refresh tokens?
Access tokens are short-lived tokens used to access resources. Refresh tokens last longer and are used to get new access tokens without logging in again.
Click to reveal answer
Which method from @nestjs/jwt is used to create a token?
Asign()
Bverify()
Cdecode()
Dencrypt()
✗ Incorrect
The sign() method creates a JWT token by encoding the payload with a secret.
What happens if a token is expired during validation?
AUser is logged out immediately
BToken is accepted anyway
CToken is refreshed automatically
DValidation fails and access is denied
✗ Incorrect
Expired tokens fail validation, so access to protected resources is denied.
Which NestJS feature helps protect routes using token validation?
APipes
BGuards
CInterceptors
DFilters
✗ Incorrect
Guards check requests before they reach route handlers, often used for token validation.
What is stored inside a JWT token?
AUser data payload
BUser password
CServer secret key
DDatabase connection string
✗ Incorrect
JWT tokens contain a payload with user data like ID or roles, but never sensitive info like passwords.
Why use refresh tokens alongside access tokens?
ATo speed up login
BTo avoid storing user data
CTo renew access tokens without re-login
DTo encrypt user passwords
✗ Incorrect
Refresh tokens allow users to get new access tokens without logging in again, improving user experience.
Explain how token generation and validation work together in a NestJS authentication flow.
Think about how the server and client share and check the token.
You got /6 concepts.
Describe the difference between access tokens and refresh tokens and why both are used.
Consider token lifetime and user convenience.
You got /5 concepts.
Practice
(1/5)
1. What is the main purpose of generating a token in a NestJS application?
easy
A. To prove a user's identity without sharing their password
B. To store user passwords securely
C. To encrypt the entire database
D. To create a backup of user data
Solution
Step 1: Understand token purpose
Tokens are used to prove who a user is without sharing sensitive information like passwords.
Step 2: Compare options
Only To prove a user's identity without sharing their password correctly describes token use; others describe unrelated tasks.
Final Answer:
To prove a user's identity without sharing their password -> Option A
Quick Check:
Token purpose = Identity proof without password [OK]
Hint: Tokens prove identity safely without passwords [OK]
Common Mistakes:
Thinking tokens store passwords
Confusing tokens with database encryption
Assuming tokens backup data
2. Which of the following is the correct way to generate a JWT token using the jsonwebtoken package in NestJS?
easy
A. jwt.sign(payload, secretKey, { expiresIn: '1h' })
B. jwt.create(payload, secretKey)
C. jwt.generateToken(secretKey, payload)
D. jwt.verify(payload, secretKey)
Solution
Step 1: Recall JWT token creation syntax
The sign method creates a token with payload, secret key, and options.
Step 2: Check options
Only jwt.sign(payload, secretKey, { expiresIn: '1h' }) uses sign correctly with payload, secret, and expiration.
Final Answer:
jwt.sign(payload, secretKey, { expiresIn: '1h' }) -> Option A
Quick Check:
Token creation uses sign() method [OK]
Hint: Use jwt.sign() to create tokens with payload and secret [OK]
Common Mistakes:
Using jwt.create() which does not exist
Mixing order of arguments
Using jwt.verify() to create tokens
3. Given the following code snippet in a NestJS service, what will be the output if the token is valid?
jwt.verify is synchronous and used correctly inside try-catch to handle errors.
Step 2: Check for missing elements
Assuming secret and token are defined, no syntax or logic errors exist.
Final Answer:
No error, code works correctly -> Option D
Quick Check:
jwt.verify with try-catch is correct pattern [OK]
Hint: jwt.verify is synchronous; use try-catch for errors [OK]
Common Mistakes:
Thinking jwt.verify is async
Confusing verify with sign
Assuming secret is undefined without context
5. You want to generate a JWT token in NestJS that expires in 30 minutes and includes the user's email and role. Which code snippet correctly achieves this?
hard
A. jwt.sign({ email, role }, secretKey, { expiresAt: '30m' })
B. jwt.sign({ email, role }, secretKey, { expiresIn: '30m' })
C. jwt.sign({ email, role }, secretKey, { expiration: 1800 })
D. jwt.sign({ email, role }, secretKey, { expireIn: 30 })
Solution
Step 1: Recall correct expiration option for jwt.sign
The option to set token lifetime is expiresIn with string or number format.
Step 2: Validate option values
Only jwt.sign({ email, role }, secretKey, { expiresIn: '30m' }) uses expiresIn: '30m' correctly; others use invalid keys or formats.
Final Answer:
jwt.sign({ email, role }, secretKey, { expiresIn: '30m' }) -> Option B
Quick Check:
Use expiresIn with '30m' for 30 minutes expiry [OK]
Hint: Use expiresIn: '30m' to set 30-minute token expiry [OK]
Common Mistakes:
Using expiresAt or expiration instead of expiresIn
Passing number without units as string
Misspelling expiresIn option
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.