Login und geschützte Routen
Login (Skizze)
from flask import session, request, redirect, url_for
from werkzeug.security import check_password_hash
@app.post("/login")
def login():
username = (request.form.get("username") or "").strip()
password = request.form.get("password") or ""
# user = aus DB laden...
# if user and check_password_hash(user["password_hash"], password):
# session["user_id"] = user["id"]
# return redirect(url_for("dashboard"))
return "Login fehlgeschlagen", 401
Schutz
from functools import wraps
from flask import session, redirect, url_for
def login_required(view):
@wraps(view)
def wrapped(*args, **kwargs):
if "user_id" not in session:
return redirect(url_for("login_form"))
return view(*args, **kwargs)
return wrapped
@app.get("/dashboard")
@login_required
def dashboard():
return "Geheimbereich"
Rate mal!
Reicht Verstecken des Links im Menü?
Auflösung
Nein – die Route muss serverseitig prüfen.
Probiere es selbst
Experiment 1
session user_id setzen.
Experiment 2
Dashboard ohne Login blocken.
Experiment 3
Logout clear.
Übungen
Level 1
login_required Idee.
Level 2
Redirect bei fehlendem Login.
Level 3
Decorator skizzieren.
Level-2-Lösung
if "user_id" not in session:
return redirect(url_for("login_form"))
Mini-Quiz
Login sitzt! Mini-Projekt: Login-Bereich.