Bird
Raised Fist0
Angularframework~10 mins

Interceptors for authentication tokens in Angular - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Interceptors for authentication tokens
HTTP Request Initiated
↓
Interceptor Captures Request
↓
Check for Auth Token
↓
Add Token
↓
Send Modified Request
↓
Server Responds
↓
Response Passed to Caller
The interceptor catches outgoing HTTP requests, adds an authentication token if available, then sends the request on. Responses pass back unchanged.
Execution Sample
Angular
intercept(req, next) {
  const token = this.authService.getToken();
  if (token) {
    const cloned = req.clone({ headers: req.headers.set('Authorization', `Bearer ${token}`) });
    return next.handle(cloned);
  }
  return next.handle(req);
}
This Angular interceptor adds a Bearer token to HTTP request headers if a token exists.
Execution Table
StepActionToken Present?Request Modified?Resulting Request HeadersNext Handler Called
1Interceptor receives requestYesNo{}No
2Check token availabilityYesNo{}No
3Clone request and add Authorization headerYesYes{ Authorization: 'Bearer abc123' }No
4Pass cloned request to next.handle()YesYes{ Authorization: 'Bearer abc123' }Yes
5Interceptor receives requestNoNo{}No
6Check token availabilityNoNo{}No
7Pass original request to next.handle()NoNo{}Yes
💡 Execution stops after passing request to next.handle(), either modified or original.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 6After Step 7
tokenundefinedabc123 or undefinedabc123 or undefinedabc123 or undefinedundefinedundefined
reqoriginal requestoriginal requestcloned request with header or originalcloned request with header or originaloriginal requestoriginal request
Key Moments - 2 Insights
Why do we clone the request before adding the token?
Because Angular HTTP requests are immutable, cloning creates a new request with the token header without changing the original. See execution_table step 3.
What happens if there is no token?
The interceptor passes the original request unchanged to next.handle(), as shown in execution_table steps 5-7.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what headers does the request have at step 4 when a token is present?
A{}
B{ Authorization: 'Token abc123' }
C{ Authorization: 'Bearer abc123' }
D{ Authorization: 'Bearer' }
💡 Hint
Check the 'Resulting Request Headers' column at step 4 in the execution_table.
At which step does the interceptor decide not to modify the request because no token is found?
AStep 3
BStep 6
CStep 2
DStep 7
💡 Hint
Look at the 'Token Present?' column for 'No' and see when the request is passed unchanged.
If the token changes during execution, which variable in variable_tracker reflects this change?
Atoken
Breq
Cnext
Dheaders
💡 Hint
Check the 'token' row in variable_tracker for value changes.
Concept Snapshot
Angular HTTP Interceptors catch outgoing requests.
Check if an auth token exists.
If yes, clone request and add 'Authorization' header.
Pass modified or original request to next handler.
Immutable requests require cloning before modification.
Used to add tokens automatically for secure APIs.
Full Transcript
In Angular, interceptors let us catch every HTTP request before it goes out. We check if we have an authentication token saved. If we do, we clone the request because requests cannot be changed directly. Then we add an Authorization header with the token to the cloned request. Finally, we send this modified request forward. If no token is found, we just send the original request. This way, tokens are added automatically to all requests needing authentication.

Practice

(1/5)
1. What is the main purpose of an HTTP interceptor in Angular when dealing with authentication tokens?
easy
A. To create new HTTP requests manually
B. To automatically add authentication tokens to outgoing HTTP requests
C. To block all HTTP requests from the app
D. To change the URL of HTTP requests

Solution

  1. Step 1: Understand the role of interceptors

    Interceptors are used to modify HTTP requests or responses globally in Angular.
  2. Step 2: Identify the use of tokens in interceptors

    They commonly add authentication tokens to requests to keep the app secure without repeating code.
  3. Final Answer:

    To automatically add authentication tokens to outgoing HTTP requests -> Option B
  4. Quick Check:

    Interceptors add tokens = B [OK]
Hint: Interceptors modify requests automatically, especially for tokens [OK]
Common Mistakes:
  • Thinking interceptors create requests
  • Believing interceptors block requests
  • Assuming interceptors change URLs
2. Which of the following is the correct way to clone an HTTP request before adding an authentication token in an Angular interceptor?
easy
A. request.updateHeaders({ Authorization: 'Bearer ' + token })
B. request.headers.set('Authorization', 'Bearer ' + token)
C. request.modifyHeaders('Authorization', 'Bearer ' + token)
D. request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) })

Solution

  1. Step 1: Recall Angular HttpRequest immutability

    HttpRequest objects are immutable, so you must clone them to modify headers.
  2. Step 2: Use the clone method with headers.set()

    The correct syntax is to call clone() and set the new header inside it.
  3. Final Answer:

    request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) }) -> Option D
  4. Quick Check:

    Clone request with headers.set() = A [OK]
Hint: Always clone requests before changing headers [OK]
Common Mistakes:
  • Trying to modify headers directly without cloning
  • Using non-existent methods like modifyHeaders or updateHeaders
  • Not using the clone method
3. Given this Angular interceptor code snippet, what will be the Authorization header value in the outgoing HTTP request if the token is 'abc123'?
intercept(request: HttpRequest<any>, next: HttpHandler) {
  const token = 'abc123';
  const cloned = request.clone({
    headers: request.headers.set('Authorization', `Bearer ${token}`)
  });
  return next.handle(cloned);
}
medium
A. Authorization: Bearer abc123
B. Authorization: abc123
C. Authorization: Bearer token
D. No Authorization header will be added

Solution

  1. Step 1: Check how the token is added

    The code sets the Authorization header to 'Bearer ' plus the token string 'abc123'.
  2. Step 2: Understand string interpolation

    The template string `Bearer ${token}` becomes 'Bearer abc123'.
  3. Final Answer:

    Authorization: Bearer abc123 -> Option A
  4. Quick Check:

    Header value = 'Bearer abc123' [OK]
Hint: Template strings insert token value directly [OK]
Common Mistakes:
  • Forgetting 'Bearer ' prefix
  • Using the literal word 'token' instead of variable
  • Assuming header is not added
4. Identify the error in this Angular interceptor code that tries to add an auth token:
intercept(req: HttpRequest<any>, next: HttpHandler) {
  const token = 'xyz';
  req.headers.set('Authorization', 'Bearer ' + token);
  return next.handle(req);
}
medium
A. Headers are immutable; must clone request before setting headers
B. Token variable is not defined
C. next.handle() is missing a return statement
D. Authorization header should be lowercase

Solution

  1. Step 1: Understand HttpRequest immutability

    HttpRequest headers cannot be changed directly; they are immutable.
  2. Step 2: Correct way is to clone the request with new headers

    You must clone the request and set headers on the clone before passing it on.
  3. Final Answer:

    Headers are immutable; must clone request before setting headers -> Option A
  4. Quick Check:

    Immutable headers require cloning = A [OK]
Hint: Headers are immutable; clone request before modifying [OK]
Common Mistakes:
  • Trying to set headers directly on request
  • Ignoring immutability of HttpRequest
  • Not returning next.handle()
5. You want to create an Angular interceptor that adds an authentication token only to requests targeting your API domain 'api.example.com'. Which approach correctly implements this conditional logic?
hard
A. Modify the token inside next.handle() without cloning
B. Add the token to all requests unconditionally
C. Check if request.url.includes('api.example.com') before cloning and adding the token
D. Use a global variable to store the token and add it after the request completes

Solution

  1. Step 1: Identify the need for conditional token addition

    Only requests to 'api.example.com' should have the token added to avoid leaking tokens to other domains.
  2. Step 2: Use URL check before cloning and modifying request

    Check request.url.includes('api.example.com') and then clone the request with the token header.
  3. Step 3: Avoid modifying requests without cloning or adding tokens globally

    Modifying without cloning or adding tokens to all requests is insecure or incorrect.
  4. Final Answer:

    Check if request.url.includes('api.example.com') before cloning and adding the token -> Option C
  5. Quick Check:

    Conditional token addition by URL check = C [OK]
Hint: Add tokens only after checking request URL [OK]
Common Mistakes:
  • Adding tokens to all requests blindly
  • Modifying requests without cloning
  • Trying to add tokens after request completes
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