Bird
Raised Fist0
Node.jsframework~5 mins

JWT token generation and verification in Node.js - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a JWT token?
A JWT (JSON Web Token) is a compact, URL-safe token used to securely transmit information between parties as a JSON object. It is often used for authentication and authorization.
Click to reveal answer
beginner
What are the three parts of a JWT token?
A JWT token has three parts separated by dots: Header, Payload, and Signature. The Header describes the token type and algorithm, the Payload contains the data, and the Signature verifies the token's integrity.
Click to reveal answer
beginner
Which Node.js library is commonly used for JWT token generation and verification?
The 'jsonwebtoken' library is commonly used in Node.js to create and verify JWT tokens easily.
Click to reveal answer
intermediate
How do you generate a JWT token in Node.js using 'jsonwebtoken'?
Use the sign() method from 'jsonwebtoken' with a payload and a secret key. Example: jwt.sign({ userId: 123 }, 'secretKey', { expiresIn: '1h' }) creates a token valid for 1 hour.
Click to reveal answer
intermediate
How do you verify a JWT token in Node.js?
Use the verify() method from 'jsonwebtoken' with the token and the secret key. It checks the token's signature and expiration, returning the decoded payload if valid or throwing an error if not.
Click to reveal answer
What does the 'Payload' part of a JWT token contain?
AThe token expiration time only
BThe token's signature
CThe encryption algorithm used
DThe data or claims about the user
Which method from 'jsonwebtoken' is used to create a JWT token?
Asign()
Bverify()
Cdecode()
Dencrypt()
What happens if you verify a JWT token with the wrong secret key?
AVerification fails and an error is thrown
BThe token is accepted anyway
CThe token expires immediately
DThe payload is changed
What is the purpose of the Signature in a JWT token?
ATo set the token expiration
BTo store user data
CTo verify the token's integrity and authenticity
DTo encrypt the payload
Which of these is a valid option to set token expiration when generating a JWT?
A{ timeout: 120 }
B{ expiresIn: '2h' }
C{ expireAfter: 3600 }
D{ validFor: '1d' }
Explain how to generate and verify a JWT token in Node.js using the 'jsonwebtoken' library.
Think about the two main methods: sign and verify.
You got /4 concepts.
    Describe the structure of a JWT token and the role of each part.
    Remember the token has three parts separated by dots.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a JWT token in a Node.js application?
      easy
      A. To securely transmit user identity without sending passwords repeatedly
      B. To store user passwords in the database
      C. To encrypt all user data on the server
      D. To create a permanent session without expiration

      Solution

      1. Step 1: Understand JWT token purpose

        JWT tokens are used to prove user identity securely without sending passwords every time.
      2. Step 2: Compare options

        Only To securely transmit user identity without sending passwords repeatedly correctly describes this purpose; others describe unrelated or incorrect uses.
      3. Final Answer:

        To securely transmit user identity without sending passwords repeatedly -> Option A
      4. Quick Check:

        JWT purpose = Secure identity proof [OK]
      Hint: JWT = identity proof without password resend [OK]
      Common Mistakes:
      • Thinking JWT stores passwords
      • Confusing JWT with encryption of all data
      • Assuming JWT creates permanent sessions
      2. Which of the following is the correct syntax to generate a JWT token using the jsonwebtoken library in Node.js?
      easy
      A. jwt.generate(payload, secretKey, { expiresAt: '1h' })
      B. jwt.create(payload, secretKey, { expiresIn: '1h' })
      C. jwt.sign(payload, secretKey, { expiresIn: '1h' })
      D. jwt.make(payload, secretKey, { expire: '1h' })

      Solution

      1. Step 1: Recall jsonwebtoken method for token creation

        The correct method to create a token is jwt.sign with payload, secret, and options.
      2. Step 2: Check option syntax

        Only jwt.sign(payload, secretKey, { expiresIn: '1h' }) uses jwt.sign and correct option key expiresIn; others use invalid method names or option keys.
      3. Final Answer:

        jwt.sign(payload, secretKey, { expiresIn: '1h' }) -> Option C
      4. Quick Check:

        Token creation method = jwt.sign [OK]
      Hint: Use jwt.sign() with expiresIn option for token creation [OK]
      Common Mistakes:
      • Using wrong method names like create or generate
      • Using expiresAt or expire instead of expiresIn
      • Missing the secret key argument
      3. Given the code snippet:
      const jwt = require('jsonwebtoken');
      const token = jwt.sign({ userId: 123 }, 'secret123', { expiresIn: '2h' });
      const decoded = jwt.verify(token, 'secret123');
      console.log(decoded.userId);

      What will be the output when this code runs?
      medium
      A. 123
      B. undefined
      C. Error: invalid token
      D. null

      Solution

      1. Step 1: Understand token creation and verification

        The token is created with payload { userId: 123 } and secret 'secret123', then verified with the same secret.
      2. Step 2: Check decoded payload output

        jwt.verify returns the original payload if token is valid, so decoded.userId is 123.
      3. Final Answer:

        123 -> Option A
      4. Quick Check:

        Decoded userId = 123 [OK]
      Hint: Verify with same secret returns original payload [OK]
      Common Mistakes:
      • Expecting undefined or null instead of payload
      • Using different secret causing invalid token error
      • Not understanding jwt.verify returns payload
      4. Identify the error in this JWT verification code snippet:
      const jwt = require('jsonwebtoken');
      const token = jwt.sign({ id: 1 }, 'mysecret');
      const decoded = jwt.verify(token, 'wrongsecret');
      console.log(decoded.id);
      medium
      A. Token is expired
      B. jwt.sign method is used incorrectly
      C. Payload is missing id property
      D. Secret key used for verification is incorrect

      Solution

      1. Step 1: Check token creation and verification secrets

        Token is signed with 'mysecret' but verified with 'wrongsecret', causing verification failure.
      2. Step 2: Understand jwt.verify behavior on secret mismatch

        jwt.verify throws an error if secret does not match, so decoded.id is not accessible.
      3. Final Answer:

        Secret key used for verification is incorrect -> Option D
      4. Quick Check:

        Secret mismatch = verification error [OK]
      Hint: Verify with same secret as sign to avoid errors [OK]
      Common Mistakes:
      • Assuming token expired without expiration set
      • Thinking payload lacks id property
      • Misusing jwt.sign method syntax
      5. You want to generate a JWT token that expires in 30 minutes and includes the user's email and role. Which code snippet correctly does this using the jsonwebtoken library?
      hard
      A. jwt.sign({ email: user.email, role: user.role }, 'secretKey', { expire: 1800 })
      B. jwt.sign({ email: user.email, role: user.role }, 'secretKey', { expiresIn: '30m' })
      C. jwt.sign({ email: user.email, role: user.role }, 'secretKey', { expiresAt: '30min' })
      D. jwt.sign({ email: user.email, role: user.role }, 'secretKey', { timeout: '30m' })

      Solution

      1. Step 1: Identify correct payload and expiration option

        The payload includes email and role, and expiration uses expiresIn with '30m' for 30 minutes.
      2. Step 2: Validate option keys and values

        Only jwt.sign({ email: user.email, role: user.role }, 'secretKey', { expiresIn: '30m' }) uses correct option key expiresIn and valid time format '30m'; others use invalid keys or formats.
      3. Final Answer:

        jwt.sign({ email: user.email, role: user.role }, 'secretKey', { expiresIn: '30m' }) -> Option B
      4. Quick Check:

        expiresIn '30m' = 30 minutes expiry [OK]
      Hint: Use expiresIn: '30m' for 30-minute token expiry [OK]
      Common Mistakes:
      • Using expire or expiresAt instead of expiresIn
      • Wrong time format like '30min'
      • Using timeout option which is invalid
      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