Bird
Raised Fist0
Flaskframework~5 mins

User model with password in Flask - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of hashing passwords in a User model?
Hashing passwords protects user data by converting the password into a secure, unreadable format. This way, even if the database is compromised, the actual passwords are not exposed.
Click to reveal answer
beginner
Which Flask extension is commonly used to hash passwords securely?
Flask-Bcrypt is commonly used to hash passwords securely in Flask applications. It provides easy-to-use methods to hash and check passwords.
Click to reveal answer
beginner
In a Flask User model, why should you never store the password as plain text?
Storing passwords as plain text is risky because if the database is leaked, attackers get direct access to user passwords. Hashing prevents this by storing only the hashed version.
Click to reveal answer
intermediate
What is the typical method name used in a Flask User model to set a password securely?
A typical method is called set_password. It takes the plain password, hashes it, and stores the hashed password in the model.
Click to reveal answer
intermediate
How do you verify a user's password during login in a Flask app?
You use a method like check_password that compares the hashed password stored in the database with the hash of the password entered by the user. If they match, the password is correct.
Click to reveal answer
Which of these is the safest way to store user passwords in Flask?
AHash passwords using Flask-Bcrypt
BStore passwords as plain text
CEncrypt passwords with reversible encryption
DStore passwords in cookies
What does the set_password method usually do in a Flask User model?
AHashes the password and stores it
BStores the password as plain text
CDeletes the password
DSends the password by email
Which Flask extension helps with password hashing?
AFlask-Login
BFlask-Mail
CFlask-Bcrypt
DFlask-WTF
Why should passwords never be stored in plain text?
AIt makes the database slower
BIt risks exposing user passwords if leaked
CIt wastes storage space
DIt is required by Flask
How do you check if a password entered by a user matches the stored password?
ACompare plain text passwords directly
BUse a random number generator
CSend password to admin for verification
DHash the entered password and compare with stored hash
Explain how to create a User model in Flask that securely handles passwords.
Think about how to protect user passwords from being stolen.
You got /4 concepts.
    Describe the steps to verify a user's password during login in a Flask app.
    Focus on how to safely check passwords without revealing them.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the set_password method in a Flask user model?
      easy
      A. To delete the user's password from the database
      B. To hash and store the user's password securely
      C. To check if the password entered matches the stored password
      D. To display the user's password in plain text

      Solution

      1. Step 1: Understand the role of set_password

        This method is used to convert a plain password into a secure hashed version before saving it.
      2. Step 2: Differentiate from check_password

        check_password is for verifying passwords, not setting them.
      3. Final Answer:

        To hash and store the user's password securely -> Option B
      4. Quick Check:

        set_password hashes password [OK]
      Hint: Remember: set_password hashes, check_password verifies [OK]
      Common Mistakes:
      • Confusing set_password with check_password
      • Thinking set_password shows the password
      • Assuming set_password deletes passwords
      2. Which of the following is the correct way to define a password hashing method in a Flask user model using Werkzeug?
      easy
      A. def set_password(self, password): return check_password_hash(self.password_hash, password)
      B. def set_password(self, password): self.password = password
      C. def set_password(self, password): self.password_hash = password
      D. def set_password(self, password): self.password_hash = generate_password_hash(password)

      Solution

      1. Step 1: Identify correct hashing usage

        The method must use generate_password_hash to hash the password before storing.
      2. Step 2: Check assignment to password_hash

        The hashed password should be saved in self.password_hash, not plain password.
      3. Final Answer:

        def set_password(self, password): self.password_hash = generate_password_hash(password) -> Option D
      4. Quick Check:

        Use generate_password_hash to store hashed password [OK]
      Hint: Use generate_password_hash to hash passwords [OK]
      Common Mistakes:
      • Storing plain password instead of hashed
      • Using check_password_hash inside set_password
      • Assigning password to wrong attribute
      3. Given this Flask user model snippet, what will user.check_password('secret') return if the password was set with user.set_password('secret')?
      from werkzeug.security import generate_password_hash, check_password_hash
      
      class User:
          def __init__(self):
              self.password_hash = ''
          def set_password(self, password):
              self.password_hash = generate_password_hash(password)
          def check_password(self, password):
              return check_password_hash(self.password_hash, password)
      
      user = User()
      user.set_password('secret')
      medium
      A. None
      B. False
      C. True
      D. Raises an error

      Solution

      1. Step 1: Understand password setting

        The password 'secret' is hashed and stored in password_hash.
      2. Step 2: Check password verification

        check_password compares the hash with 'secret' and returns True if they match.
      3. Final Answer:

        True -> Option C
      4. Quick Check:

        Matching password returns True [OK]
      Hint: check_password returns True if password matches hash [OK]
      Common Mistakes:
      • Expecting False for correct password
      • Thinking check_password returns the hash
      • Assuming error if password matches
      4. Identify the error in this Flask user model code snippet:
      from werkzeug.security import generate_password_hash, check_password_hash
      
      class User:
          def __init__(self):
              self.password_hash = None
          def set_password(self, password):
              self.password_hash = generate_password_hash(password)
          def check_password(self, password):
              return check_password_hash(password, self.password_hash)
      
      medium
      A. The order of arguments in check_password_hash is reversed
      B. password_hash should be initialized as an empty string, not None
      C. set_password should return the hashed password
      D. The class is missing a username attribute

      Solution

      1. Step 1: Review check_password_hash usage

        The correct order is check_password_hash(stored_hash, password).
      2. Step 2: Identify argument mistake

        The code passes password first and self.password_hash second, which is wrong.
      3. Final Answer:

        The order of arguments in check_password_hash is reversed -> Option A
      4. Quick Check:

        check_password_hash needs (hash, password) order [OK]
      Hint: check_password_hash(hash, password) order matters [OK]
      Common Mistakes:
      • Swapping arguments in check_password_hash
      • Initializing password_hash as None causes no error but is not best
      • Expecting set_password to return a value
      • Confusing missing attributes with password errors
      5. You want to add a method change_password to your Flask user model that updates the password only if the old password matches. Which implementation correctly applies this logic?
      hard
      A. def change_password(self, old_password, new_password): if self.check_password(old_password): self.set_password(new_password) return True return False
      B. def change_password(self, old_password, new_password): self.set_password(new_password) return True
      C. def change_password(self, old_password, new_password): if old_password == new_password: self.set_password(new_password) return True return False
      D. def change_password(self, old_password, new_password): if not self.check_password(new_password): self.set_password(old_password) return True return False

      Solution

      1. Step 1: Verify old password before changing

        The method must check if the old password matches using check_password.
      2. Step 2: Update password only if old password is correct

        If the check passes, call set_password with the new password and return True; else return False.
      3. Final Answer:

        def change_password(self, old_password, new_password): if self.check_password(old_password): self.set_password(new_password) return True return False -> Option A
      4. Quick Check:

        Change password only if old password matches [OK]
      Hint: Always verify old password before setting new one [OK]
      Common Mistakes:
      • Changing password without verifying old password
      • Comparing old and new passwords incorrectly
      • Swapping old and new passwords in checks
      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