JWT integration helps securely identify users when they access a database through GraphQL. It keeps data safe by checking who is allowed to see or change it.
When you want to make sure only logged-in users can see their own data.
When you need to check user roles before allowing certain database actions.
When building apps where users must stay logged in without typing passwords repeatedly.
When you want to pass user info safely between client and server in GraphQL requests.
Syntax
GraphQL
Authorization: Bearer <your_jwt_token>
The JWT token is sent in the HTTP header named 'Authorization'.
The word 'Bearer' is followed by a space and then the token string.
Examples
This example shows a typical JWT token sent in the header.
const user = verifyToken(context.headers.authorization);
if (!user) return null;
return db.getUserData(user.id);
What happens if the token is invalid or missing?
medium
A. The resolver returns null and no data is fetched
B. The resolver throws a syntax error
C. The resolver returns all user data without restriction
D. The resolver crashes the server
Solution
Step 1: Analyze token verification
The function verifyToken returns null or false if the token is invalid or missing.
Step 2: Check resolver behavior on invalid token
If user is falsy, the resolver returns null, meaning no data is sent back.
Final Answer:
The resolver returns null and no data is fetched -> Option A
Quick Check:
Invalid token leads to null return [OK]
Hint: Invalid token means no user, so resolver returns null [OK]
Common Mistakes:
Expecting a syntax error on invalid token
Assuming data is returned without user
Thinking server crashes on bad token
4. Identify the error in this JWT integration snippet:
const token = context.headers.Authorization;
const user = verifyToken(token);
if (!user) throw new Error('Unauthorized');
return db.getUserData(user.id);
medium
A. verifyToken should be called with context.token, not token
B. Header name should be lowercase 'authorization', not 'Authorization'
C. The error message should be 'Forbidden' instead of 'Unauthorized'
D. db.getUserData should be called before verifying the token
Solution
Step 1: Check header name case sensitivity
HTTP headers in Node.js are usually lowercase, so 'authorization' is correct, not 'Authorization'.
Step 2: Confirm token extraction correctness
Using 'Authorization' may cause token to be undefined, leading to verification failure.
Final Answer:
Header name should be lowercase 'authorization', not 'Authorization' -> Option B
Quick Check:
Header keys are lowercase [OK]
Hint: Use lowercase 'authorization' header key in code [OK]
Common Mistakes:
Using uppercase header keys in Node.js
Calling db before verifying user
Confusing error message types
5. You want to restrict a GraphQL query so only users with role 'admin' can access sensitive data. Which JWT integration approach is best?
hard
A. Verify token, then check if user.role === 'admin' before returning data
B. Return data first, then verify token asynchronously
C. Skip token verification and rely on frontend checks
D. Verify token but ignore user roles for simplicity
Solution
Step 1: Understand role-based access control
To restrict access, verify the token and check the user's role before sending data.
Step 2: Evaluate options for security
Returning data before verification or skipping roles risks exposing sensitive info.
Final Answer:
Verify token, then check if user.role === 'admin' before returning data -> Option A
Quick Check:
Check role after token verification [OK]
Hint: Check user role after verifying JWT token [OK]
Common Mistakes:
Sending data before verifying user
Ignoring roles in backend checks
Trusting frontend for security
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.