Aller au contenu principal

3 formations sont désormais disponibles : Python, Flask et JS.

Aller au contenu principal

Gérer les sessions à la main (session['user_id'] = 1), c'est faisable, mais chiant. Comment on gère le "Se souvenir de moi" ? Comment on protège une route ? Comment on sait qui est connecté ?

Flask-Login est là pour ça.

Installation

pip install flask-login

Configuration (app.py)

from flask_login import LoginManager, UserMixin

login_manager = LoginManager(app)
login_manager.login_view = 'login' # La route où rediriger si l'utilisateur n'est pas connecté
login_manager.login_message_category = 'info'

Adapter le Modèle User

Pour que Flask-Login fonctionne, notre classe User doit implémenter certaines méthodes (is_authenticated, etc.). Heureusement, UserMixin fait tout pour nous.

# Dans models.py ou app.py
from flask_login import UserMixin

class User(db.Model, UserMixin): # <-- On ajoute UserMixin
    id = db.Column(db.Integer, primary_key=True)
    # ... le reste ...

Le User Loader

Flask-Login a besoin de savoir comment charger un utilisateur depuis la base de données à partir de son ID (stocké dans le cookie).

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

C'est tout pour la config !