Flask interview question · Most asked
How do you implement user authentication in Flask?
Summary
For session-based web apps use Flask-Login (user loader, login_user, logout_user, @login_required, current_user) with hashed passwords (Werkzeug's generate_password_hash or Argon2). For APIs use token-based auth (e.g., Flask-JWT-Extended).
Longer Answer
Flask-Login manages the session user ID and 'remember me' cookies; it doesn't handle registration, hashing or permissions. Regenerate the session on login, protect forms with CSRF tokens (Flask-WTF), and rate-limit login attempts.
Code Example
from flask_login import LoginManager, login_user, login_required, current_user
from werkzeug.security import check_password_hash
login_manager = LoginManager()
@login_manager.user_loader
def load_user(user_id: str):
return db.session.get(User, int(user_id))
@bp.post("/login")
def login():
user = db.session.scalar(db.select(User).filter_by(email=request.form["email"]))
if user and check_password_hash(user.password_hash, request.form["password"]):
login_user(user)
return redirect(url_for("dashboard.index"))
abort(401)
@bp.get("/me")
@login_required
def me():
return {"email": current_user.email}
Key Points
- Flask-Login: session auth helpers
@login_requireddecorator- Hash passwords (scrypt/pbkdf2 via Werkzeug, or Argon2)
- Flask-JWT-Extended for APIs
More most-asked Flask questions
- How do you access request data and build responses in Flask?
- How do Flask sessions work and what are their security implications?
- What is the application factory pattern in Flask and why use it?
- What is Flask and what does 'microframework' mean?
- Explain Flask's application context and request context.
- What are Blueprints in Flask?
- How does routing work in Flask, including variable rules and HTTP methods?
- How do you use SQLAlchemy with Flask (Flask-SQLAlchemy 3.x)?