Bird
Raised Fist0
NestJSframework~5 mins

Local strategy (username/password) in NestJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the Local strategy in NestJS authentication?
The Local strategy is used to authenticate users by verifying their username and password during login.
Click to reveal answer
beginner
Which NestJS package provides the Local strategy for username/password authentication?
The @nestjs/passport package provides the Local strategy by integrating Passport.js with NestJS.
Click to reveal answer
intermediate
In a Local strategy, what method is typically overridden to validate user credentials?
The validate() method is overridden to check the username and password against stored user data.
Click to reveal answer
intermediate
What does the validate() method return if the user credentials are correct?
It returns the user object without the password, which Passport attaches to the request object.
Click to reveal answer
intermediate
How does NestJS use the Local strategy in a login route?
NestJS uses the @UseGuards(AuthGuard('local')) decorator to protect the login route and trigger the Local strategy.
Click to reveal answer
What does the Local strategy in NestJS authenticate?
AAPI keys
BOAuth tokens
CUsername and password
DJWT tokens
Which method do you override in a Local strategy to check user credentials?
Alogin()
Bauthenticate()
Cauthorize()
Dvalidate()
What happens if validate() returns null or throws an error in Local strategy?
AAuthentication fails
BUser is authenticated
CUser is redirected to home
DSession is created
Which decorator applies the Local strategy guard to a route in NestJS?
A@LocalStrategy()
B@UseGuards(AuthGuard('local'))
C@AuthLocal()
D@UseLocal()
What package must be installed to use Local strategy in NestJS?
A@nestjs/passport
Bpassport-google-oauth
Cpassport-local
D@nestjs/jwt
Explain how the Local strategy works in NestJS for username and password authentication.
Think about how NestJS checks user login details step by step.
You got /5 concepts.
    Describe how to protect a login route using the Local strategy in NestJS.
    Focus on the decorator and guard usage.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the LocalStrategy in NestJS authentication?
      easy
      A. To encrypt user passwords
      B. To generate JWT tokens for users
      C. To handle user registration
      D. To verify username and password for user login

      Solution

      1. Step 1: Understand the role of LocalStrategy

        The LocalStrategy is designed to check user credentials, specifically username and password, during login.
      2. Step 2: Differentiate from other strategies

        Unlike JWT or OAuth strategies, LocalStrategy focuses on validating credentials, not token generation or registration.
      3. Final Answer:

        To verify username and password for user login -> Option D
      4. Quick Check:

        LocalStrategy = username/password check [OK]
      Hint: Local strategy always checks username and password [OK]
      Common Mistakes:
      • Confusing LocalStrategy with JWT token generation
      • Thinking LocalStrategy handles user registration
      • Assuming LocalStrategy encrypts passwords
      2. Which method must be implemented in a NestJS LocalStrategy class to check user credentials?
      easy
      A. authenticate()
      B. validate()
      C. login()
      D. verify()

      Solution

      1. Step 1: Recall LocalStrategy method names

        In NestJS, the LocalStrategy requires a validate method to check username and password.
      2. Step 2: Confirm method purpose

        The validate method returns the user if credentials are correct or throws an error if not.
      3. Final Answer:

        validate() -> Option B
      4. Quick Check:

        Credential check method = validate() [OK]
      Hint: LocalStrategy uses validate() to check credentials [OK]
      Common Mistakes:
      • Using authenticate() which is not a LocalStrategy method
      • Confusing login() with validate()
      • Assuming verify() is required
      3. Given this LocalStrategy snippet, what happens if the password is incorrect?
      async validate(username: string, password: string) {
        const user = await this.authService.validateUser(username, password);
        if (!user) {
          throw new UnauthorizedException();
        }
        return user;
      }
      medium
      A. The function returns null silently
      B. The user object is returned anyway
      C. An UnauthorizedException is thrown stopping login
      D. The password is reset automatically

      Solution

      1. Step 1: Analyze the validate method logic

        If validateUser returns no user (password incorrect), the code throws UnauthorizedException.
      2. Step 2: Understand exception effect

        Throwing UnauthorizedException stops the login process and signals failure.
      3. Final Answer:

        An UnauthorizedException is thrown stopping login -> Option C
      4. Quick Check:

        Wrong password = UnauthorizedException thrown [OK]
      Hint: Throw UnauthorizedException if user not found [OK]
      Common Mistakes:
      • Assuming user is returned even if password is wrong
      • Thinking function returns null without error
      • Believing password resets automatically
      4. Identify the error in this LocalStrategy validate method:
      async validate(username: string, password: string) {
        const user = this.authService.validateUser(username, password);
        if (!user) {
          throw new UnauthorizedException();
        }
        return user;
      }
      medium
      A. Missing await before authService.validateUser call
      B. UnauthorizedException should not be thrown
      C. validate method should not be async
      D. username and password parameters are reversed

      Solution

      1. Step 1: Check async call usage

        The method calls validateUser which returns a Promise, but lacks await.
      2. Step 2: Understand consequences of missing await

        Without await, user is a Promise, so if (!user) check is incorrect and login logic breaks.
      3. Final Answer:

        Missing await before authService.validateUser call -> Option A
      4. Quick Check:

        Async calls need await to get results [OK]
      Hint: Always await async calls in validate() [OK]
      Common Mistakes:
      • Forgetting await on async service calls
      • Throwing exceptions incorrectly
      • Misordering parameters
      5. You want to customize the LocalStrategy to allow login with either username or email. Which change is best to implement in the validate method?
      hard
      A. Modify validateUser to accept a single identifier and check both username and email
      B. Add a second validate method for email login
      C. Use two separate LocalStrategy classes for username and email
      D. Change the password parameter to accept email instead

      Solution

      1. Step 1: Understand the goal

        Allow login by username or email using one validate method.
      2. Step 2: Best approach

        Modify validateUser to accept one identifier and check if it matches username or email, then verify password.
      3. Step 3: Why other options fail

        Adding multiple validate methods or strategies complicates logic; changing password parameter is incorrect.
      4. Final Answer:

        Modify validateUser to accept a single identifier and check both username and email -> Option A
      5. Quick Check:

        One validate method, flexible identifier [OK]
      Hint: Use one validate method checking username or email [OK]
      Common Mistakes:
      • Creating multiple validate methods unnecessarily
      • Using separate strategies for username and email
      • Confusing password parameter with identifier
      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