Solution: Authenticate Users with Configurable Login and Tokens
Explore how to apply the Strategy Pattern to build a flexible authentication system in Node.js. Learn to implement multiple login methods like password, OTP, and Google along with different token generation strategies. Understand how to compose these strategies in a controller to handle authentication and token issuance seamlessly without conditional logic.
We'll cover the following...
Solution explanation
Lines 2–27: Define three authentication strategies:
PasswordAuth,OtpAuth, andGoogleAuth.Each has an async
.authenticate()that simulates real checks withsetTimeout().PasswordAuthchecks a simple password string.OtpAuthverifies a fixed OTP code.GoogleAuthvalidates a token prefix.All follow a shared interface, so the context can delegate uniformly.
Lines 30–54: The
AuthServiceandTokenServiceare independent contexts.Each stores its active strategy and delegates calls to it.
Both can switch strategies at runtime using
.setStrategy().There are no conditionals—the behavior is entirely determined by which strategy is active.
Lines 57–81: The token strategies—
SessionToken...