Skip to content

Introduction to Flask-Login

Flask-Login is the standard extension for login/session management.

It helps you:

  • log users in and out
  • remember users across requests
  • access current_usercurrent_user
  • protect routes with @login_required@login_required

Install

bash
pip install Flask-Login
bash
pip install Flask-Login

Minimal setup

python
from flask import Flask
from flask_login import LoginManager
 
app = Flask(__name__)
app.config["SECRET_KEY"] = "dev-key"
 
login_manager = LoginManager()
login_manager.init_app(app)
 
# where to redirect when login is required
login_manager.login_view = "login"
python
from flask import Flask
from flask_login import LoginManager
 
app = Flask(__name__)
app.config["SECRET_KEY"] = "dev-key"
 
login_manager = LoginManager()
login_manager.init_app(app)
 
# where to redirect when login is required
login_manager.login_view = "login"

User model requirement

Your user model must implement:

  • is_authenticatedis_authenticated
  • is_activeis_active
  • is_anonymousis_anonymous
  • get_id()get_id()

The easiest way is to inherit:

python
from flask_login import UserMixin
 
class User(UserMixin, db.Model):
    ...
python
from flask_login import UserMixin
 
class User(UserMixin, db.Model):
    ...

current_user

Flask-Login provides:

python
from flask_login import current_user
python
from flask_login import current_user

current_usercurrent_user represents the user for the current request.

If not logged in, it’s an AnonymousUser object.

Visualize it

Here’s how a login request creates a session cookie that Flask-Login then uses to recognize the user on every later request.

diagram Flask-Login session flow mermaid
A login request creates a session cookie; later requests carry that cookie so the server can identify the user

If this helped you, consider buying me a coffee ☕

Buy me a coffee

Was this page helpful?

Let us know how we did