Bird
Raised Fist0
NestJSframework~5 mins

Passport.js integration in NestJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is Passport.js used for in a NestJS application?
Passport.js is used to handle user authentication in a NestJS app. It helps verify user identity with strategies like local login or OAuth.
Click to reveal answer
beginner
How do you add Passport.js to a NestJS project?
You install the passport and passport strategy packages, then import PassportModule in your module to use Passport features.
Click to reveal answer
beginner
What is a Passport strategy?
A strategy is a way to authenticate users, like checking username/password (local) or using Google OAuth. You tell Passport which strategy to use.
Click to reveal answer
intermediate
How does NestJS connect Passport strategies to routes?
NestJS uses guards like AuthGuard('local') to protect routes. Guards run the Passport strategy before allowing access.
Click to reveal answer
intermediate
What role does the AuthService play in Passport.js integration?
AuthService contains the logic to validate users, like checking credentials against a database. Passport calls it during authentication.
Click to reveal answer
Which NestJS module must you import to use Passport.js?
AUserModule
BAuthModule
CHttpModule
DPassportModule
What does the 'local' strategy in Passport.js do?
AAuthenticates using username and password
BAuthenticates using Google OAuth
CHandles session management
DEncrypts user passwords
How do you protect a NestJS route with Passport authentication?
AUse @UseGuards(AuthGuard('strategyName')) decorator
BCall passport.authenticate() inside the controller
CAdd PassportModule to the controller
DUse @Injectable() decorator
What does AuthService typically do in Passport integration?
AManages database connections
BValidates user credentials
CHandles HTTP requests
DRenders views
Which method does Passport call to validate a user in a local strategy?
Alogin()
Bauthenticate()
Cvalidate()
Dregister()
Explain how Passport.js integrates with NestJS to authenticate users.
Think about modules, services, strategies, and guards working together.
You got /5 concepts.
    Describe the steps to protect a NestJS route using Passport's local strategy.
    Focus on strategy setup and route guard usage.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the main purpose of integrating Passport.js in a NestJS application?
      easy
      A. To handle user authentication and login strategies
      B. To manage database connections
      C. To style the frontend components
      D. To optimize server performance

      Solution

      1. Step 1: Understand Passport.js role

        Passport.js is a library designed to handle user authentication in Node.js applications.
      2. Step 2: Connect Passport.js with NestJS

        In NestJS, Passport.js is used to define login strategies and verify users securely.
      3. Final Answer:

        To handle user authentication and login strategies -> Option A
      4. Quick Check:

        Passport.js = Authentication [OK]
      Hint: Passport.js is for login and user verification [OK]
      Common Mistakes:
      • Confusing Passport.js with database tools
      • Thinking Passport.js styles UI
      • Assuming Passport.js improves server speed
      2. Which of the following is the correct way to apply a Passport.js local strategy in a NestJS controller?
      easy
      A. @UseGuards('local')
      B. @UseGuards(LocalStrategy)
      C. @UseGuards(AuthGuard('local'))
      D. @UseGuards(PassportLocal)

      Solution

      1. Step 1: Recall NestJS guard syntax

        Passport strategies are applied using AuthGuard with the strategy name as a string.
      2. Step 2: Match correct syntax

        The correct syntax is @UseGuards(AuthGuard('local')) to apply the local strategy guard.
      3. Final Answer:

        @UseGuards(AuthGuard('local')) -> Option C
      4. Quick Check:

        UseGuards with AuthGuard('strategy') [OK]
      Hint: Use AuthGuard with strategy name string [OK]
      Common Mistakes:
      • Passing strategy class instead of string
      • Omitting AuthGuard wrapper
      • Using incorrect decorator syntax
      3. Given this NestJS Passport.js setup, what will be the output when a user with correct credentials logs in?
      async validate(username: string, password: string) {
        if (username === 'user' && password === 'pass') {
          return { userId: 1, username };
        }
        return null;
      }
      medium
      A. Returns undefined
      B. Throws an error
      C. Returns null always
      D. Returns user object { userId: 1, username: 'user' }

      Solution

      1. Step 1: Analyze validate method logic

        The method checks if username is 'user' and password is 'pass'. If yes, it returns a user object.
      2. Step 2: Determine output for correct credentials

        For correct credentials, it returns { userId: 1, username } which is { userId: 1, username: 'user' }.
      3. Final Answer:

        Returns user object { userId: 1, username: 'user' } -> Option D
      4. Quick Check:

        Correct credentials return user object [OK]
      Hint: Correct credentials return user object, else null [OK]
      Common Mistakes:
      • Assuming it throws error on failure
      • Confusing null with undefined
      • Ignoring the return statement
      4. Identify the error in this NestJS Passport.js guard usage:
      @UseGuards(AuthGuard(LocalStrategy))
      @Get('profile')
      getProfile() {
        return 'User Profile';
      }
      medium
      A. AuthGuard should receive strategy name as string, not class
      B. Missing @Controller decorator
      C. getProfile method must be async
      D. AuthGuard cannot be used with @Get

      Solution

      1. Step 1: Check AuthGuard parameter

        AuthGuard expects a string with the strategy name, e.g., 'local', not the strategy class.
      2. Step 2: Confirm correct usage

        Correct usage is @UseGuards(AuthGuard('local')), passing the strategy name as a string.
      3. Final Answer:

        AuthGuard should receive strategy name as string, not class -> Option A
      4. Quick Check:

        AuthGuard('strategyName') not class [OK]
      Hint: Pass strategy name string to AuthGuard [OK]
      Common Mistakes:
      • Passing strategy class instead of string
      • Forgetting to import AuthGuard
      • Assuming method must be async
      5. You want to protect a NestJS route so only logged-in users can access it using Passport.js. Which combination correctly sets this up?
      1. Create a JWT strategy class
      2. Use @UseGuards(AuthGuard('jwt')) on the route
      3. Implement validate() method in strategy
      4. Call AuthGuard('local') on the route
      Which steps should you follow?
      hard
      A. All steps 1, 2, 3, and 4
      B. Steps 1, 2, and 3 only
      C. Steps 1 and 4 only
      D. Steps 2 and 4 only

      Solution

      1. Step 1: Understand JWT strategy usage

        To protect routes with JWT, create a JWT strategy and implement validate() to verify tokens.
      2. Step 2: Apply AuthGuard with 'jwt'

        Use @UseGuards(AuthGuard('jwt')) on routes to enforce JWT authentication.
      3. Step 3: Exclude local strategy for JWT protection

        Using AuthGuard('local') is for login, not for protecting routes after login.
      4. Final Answer:

        Steps 1, 2, and 3 only -> Option B
      5. Quick Check:

        JWT strategy + AuthGuard('jwt') + validate() [OK]
      Hint: Use JWT strategy and AuthGuard('jwt') to protect routes [OK]
      Common Mistakes:
      • Using local strategy guard to protect routes
      • Skipping validate() method in strategy
      • Applying AuthGuard without strategy name
      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