Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Token Refresh Mechanism
📖 Scenario: You are building a simple REST API that uses tokens to allow users to access protected resources. Tokens expire after some time, so you need a way to refresh them without asking the user to log in again.
🎯 Goal: Create a token refresh mechanism that checks if the current token is expired and issues a new token if needed.
📋 What You'll Learn
Create a dictionary called tokens with user tokens and their expiry times
Create a variable called current_time representing the current time
Write a function called refresh_token that takes a user and refreshes the token if expired
Print the refreshed token or a message if the token is still valid
💡 Why This Matters
🌍 Real World
Token refresh mechanisms are used in apps and websites to keep users logged in securely without asking for passwords repeatedly.
💼 Career
Understanding token refresh is important for backend developers working on authentication and security in web services.
Progress0 / 4 steps
1
Create the initial tokens dictionary
Create a dictionary called tokens with these exact entries: 'alice': {'token': 'abc123', 'expiry': 100}, 'bob': {'token': 'def456', 'expiry': 200}, and 'carol': {'token': 'ghi789', 'expiry': 50}.
Rest API
Hint
Use a dictionary with usernames as keys and another dictionary as values holding 'token' and 'expiry'.
2
Set the current time
Create a variable called current_time and set it to 120 to represent the current time.
Rest API
Hint
Just assign the number 120 to the variable current_time.
3
Write the token refresh function
Write a function called refresh_token that takes a parameter user. Inside the function, check if tokens[user]['expiry'] is less than current_time. If yes, update tokens[user]['token'] to 'newtoken123' and tokens[user]['expiry'] to current_time + 100. Otherwise, do nothing.
Rest API
Hint
Use an if statement to compare expiry with current_time and update the token and expiry if expired.
4
Print the refreshed token
Call refresh_token for the user 'alice'. Then print the string "Refreshed token for alice: " followed by tokens['alice']['token'].
Rest API
Hint
Call the function with 'alice' and print the message with the updated token.
Practice
(1/5)
1. What is the main purpose of a refresh token in a token refresh mechanism?
easy
A. To obtain a new access token without asking the user to log in again
B. To log out the user immediately
C. To store user passwords securely
D. To encrypt the access token
Solution
Step 1: Understand the role of refresh tokens
Refresh tokens are used to get new access tokens when the old ones expire without requiring the user to log in again.
Step 2: Compare options with this role
Only To obtain a new access token without asking the user to log in again describes this purpose correctly. Options A, C, and D describe unrelated or incorrect functions.
Final Answer:
To obtain a new access token without asking the user to log in again -> Option A
Quick Check:
Refresh token = renew access token without login [OK]
2. Which HTTP method is typically used by clients to send a refresh token to the server for a new access token?
easy
A. GET
B. PUT
C. POST
D. DELETE
Solution
Step 1: Identify the HTTP method for sending data securely
POST is used to send data like refresh tokens in the request body securely to the server.
Step 2: Eliminate other methods
GET is for retrieving data, DELETE for removing resources, and PUT for updating. Refresh token requests usually send sensitive data, so POST is preferred.
Final Answer:
POST -> Option C
Quick Check:
Send refresh token securely = POST [OK]
Hint: Use POST to send refresh tokens securely [OK]
Common Mistakes:
Using GET which exposes tokens in URL
Confusing PUT with POST
Using DELETE which is for removal
3. Consider this simplified server response code snippet handling a refresh token request:
D. Using assignment (=) instead of comparison (==) in the if condition
Solution
Step 1: Check the if condition syntax
The code uses a single equals sign (=) which is assignment, not comparison. This causes a syntax error or logic error.
Step 2: Confirm other parts are correct
The else block has a return statement, generate_new_token() is assumed defined, and function parameters are correct.
Final Answer:
Using assignment (=) instead of comparison (==) in the if condition -> Option D
Quick Check:
Use '==' to compare, not '=' [OK]
Hint: Use '==' for comparison in conditions [OK]
Common Mistakes:
Confusing '=' with '==' in if statements
Assuming missing return in else
Thinking function parameters are wrong
5. You want to implement a token refresh endpoint that rejects refresh tokens if they are expired or revoked. Which approach best ensures security and proper token refresh?
hard
A. Store refresh tokens with expiration and revocation status; verify both before issuing new access tokens
B. Accept any refresh token and always issue a new access token
C. Only check if the refresh token exists in the database, ignore expiration
D. Issue new access tokens without any refresh token verification
Solution
Step 1: Understand security needs for refresh tokens
Refresh tokens must be checked for expiration and revocation to prevent misuse and unauthorized access.
Step 2: Evaluate options for token verification
Store refresh tokens with expiration and revocation status; verify both before issuing new access tokens includes both expiration and revocation checks, ensuring only valid tokens get new access tokens. Other options ignore important security checks.
Final Answer:
Store refresh tokens with expiration and revocation status; verify both before issuing new access tokens -> Option A
Quick Check:
Verify expiration and revocation for security [OK]
Hint: Check expiration and revocation before refresh [OK]