Bird
Raised Fist0
NestJSframework~5 mins

Token generation and validation in NestJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
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()
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
Which NestJS feature helps protect routes using token validation?
APipes
BGuards
CInterceptors
DFilters
What is stored inside a JWT token?
AUser data payload
BUser password
CServer secret key
DDatabase connection string
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
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

      1. Step 1: Understand token purpose

        Tokens are used to prove who a user is without sharing sensitive information like passwords.
      2. Step 2: Compare options

        Only To prove a user's identity without sharing their password correctly describes token use; others describe unrelated tasks.
      3. Final Answer:

        To prove a user's identity without sharing their password -> Option A
      4. 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

      1. Step 1: Recall JWT token creation syntax

        The sign method creates a token with payload, secret key, and options.
      2. Step 2: Check options

        Only jwt.sign(payload, secretKey, { expiresIn: '1h' }) uses sign correctly with payload, secret, and expiration.
      3. Final Answer:

        jwt.sign(payload, secretKey, { expiresIn: '1h' }) -> Option A
      4. 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?
      const token = jwt.sign({ userId: 123 }, 'secretKey', { expiresIn: '1h' });
      const decoded = jwt.verify(token, 'secretKey');
      console.log(decoded.userId);
      medium
      A. undefined
      B. null
      C. 123
      D. Throws an error

      Solution

      1. Step 1: Understand token creation and verification

        The token is created with payload { userId: 123 } and signed with 'secretKey'.
      2. Step 2: Verify token with the same secret

        Verification returns the decoded payload, so decoded.userId is 123.
      3. Final Answer:

        123 -> Option C
      4. Quick Check:

        Valid token returns payload userId = 123 [OK]
      Hint: Verify returns original payload if token and secret match [OK]
      Common Mistakes:
      • Expecting undefined or null instead of payload
      • Using wrong secret causing error
      • Confusing verify with sign
      4. Identify the error in this NestJS token validation code:
      try {
        const payload = jwt.verify(token, secret);
        return payload.userId;
      } catch (error) {
        return 'Invalid token';
      }
      medium
      A. Secret key is not defined
      B. Missing async keyword for jwt.verify
      C. jwt.verify should be jwt.sign
      D. No error, code works correctly

      Solution

      1. Step 1: Analyze jwt.verify usage

        jwt.verify is synchronous and used correctly inside try-catch to handle errors.
      2. Step 2: Check for missing elements

        Assuming secret and token are defined, no syntax or logic errors exist.
      3. Final Answer:

        No error, code works correctly -> Option D
      4. 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

      1. Step 1: Recall correct expiration option for jwt.sign

        The option to set token lifetime is expiresIn with string or number format.
      2. Step 2: Validate option values

        Only jwt.sign({ email, role }, secretKey, { expiresIn: '30m' }) uses expiresIn: '30m' correctly; others use invalid keys or formats.
      3. Final Answer:

        jwt.sign({ email, role }, secretKey, { expiresIn: '30m' }) -> Option B
      4. 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 unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard