"use client"; import { useEffect, useState } from "react"; import { AppShell } from "@/components/AppShell"; import { api } from "@/lib/api-client"; export default function Home() { const [username, setUsername] = useState(null); useEffect(() => { api .get<{ user: { username: string } }>("/api/auth/me") .then((data) => setUsername(data.user.username)) .catch(() => { // Session abgelaufen/ungültig -- Middleware leitet beim nächsten Request um. window.location.href = "/login"; }); }, []); // Nach dem Abmelden führt der Zurück-Knopf zu dieser Seite aus dem Browser-Cache (bfcache) // zurück -- OHNE neue Anfrage, also ohne dass Middleware oder Session-Prüfung greifen. Die // eingefrorene Ansicht darf nicht stehen bleiben: Bei einer aus dem bfcache zurückgeholten // Seite die Session erneut prüfen und bei fehlender Anmeldung sofort auf /login gehen. useEffect(() => { function onPageShow(e: PageTransitionEvent) { if (!e.persisted) return; api.get("/api/auth/me").catch(() => { window.location.href = "/login"; }); } window.addEventListener("pageshow", onPageShow); return () => window.removeEventListener("pageshow", onPageShow); }, []); if (username === null) { return (

Lädt…

); } return ; }