Session ·
Flask-Login ·
JWT ·
Passwort-Hashing ·
Decorators ·
Protected Routes
Authentifizierung ist ein zentraler Bestandteil jeder Webanwendung. Diese Cheatsheet zeigt die gängigsten Methoden – von einfachen Session-basierten Lösungen bis hin zu JWT für APIs.
Session-basierte Authentifizierung ist der einfachste Weg, Benutzer in Flask zu authentifizieren. Die Benutzer-ID wird in der Session gespeichert, die als signiertes Cookie beim Client hinterlegt wird.
session.permanent = True und konfigurieren Sie PERMANENT_SESSION_LIFETIME (z.B. timedelta(days=7)) für langlebige Sessions.
Flask-Login ist die Standard-Erweiterung für Session-basierte Authentifizierung. Sie bietet praktische Hilfsfunktionen wie login_user, current_user und den @login_required-Decorator.
login_user(user, remember=True) setzt ein langlebiges Cookie für "Angemeldet bleiben". current_user ist in jedem Request verfügbar.
JWT (JSON Web Tokens) sind der Standard für API-Authentifizierung. Der Client sendet bei jedem Request das Token im Authorization-Header. Flask-JWT-Extended vereinfacht die Implementierung.
@jwt_required() und get_jwt_identity(). Der Client sendet das Token im Authorization: Bearer <token>-Header.
Passwort-Hashing ist essenziell für die sichere Speicherung von Benutzerpasswörtern. bcrypt und werkzeug.security bieten einfache und sichere Hashing-Funktionen.
werkzeug.security verwendet standardmäßig PBKDF2 mit SHA-256.
Custom Decorators ermöglichen die einfache und wiederverwendbare Prüfung von Benutzerberechtigungen – z.B. für Rollen (Admin, Moderator) oder spezifische Berechtigungen.
@login_required für eine mehrschichtige Berechtigungsprüfung. Verwenden Sie abort(403) für unberechtigte Zugriffe.
Protected Routes sind Seiten oder Endpoints, die nur für authentifizierte Benutzer zugänglich sind. Sie werden mit Decorators wie @login_required oder @jwt_required abgesichert.
abort(401) für nicht authentifizierte und abort(403) für nicht autorisierte Zugriffe. Flask-Login leitet automatisch zur Login-Seite weiter (login_view).
session
Flask-Login
JWT
bcrypt
@decorator
@login_required
login_user(user) ·
@login_required ·
create_access_token(identity=user.id)