Sobes.tech
Junior

Beschreiben Sie die Mechanik des Benutzer-Login-Prozesses im System.

sobes.tech KI

Antwort von AI

  1. Der Benutzer gibt seine Anmeldedaten (Benutzername und Passwort) auf der Anmeldeseite ein.
  2. Der Browser sendet eine HTTP-POST-Anfrage an den Server mit den eingegebenen Daten.
  3. Der Server empfängt die Anfrage und übergibt die Anmeldedaten an die Authentifizierungskomponente.
  4. Die Authentifizierungskomponente überprüft die empfangenen Daten mit den Informationen in der Benutzerdatenbank:
    • Überprüft, ob ein Benutzer mit diesem Benutzernamen existiert.
    • Hash das eingegebene Passwort und vergleicht es mit dem Hash des Passworts, das für diesen Benutzer gespeichert ist.
  5. Bei erfolgreicher Authentifizierung:
    • Der Server erstellt eine Sitzung für den Benutzer oder generiert ein Zugriffstoken (z.B. JWT).
    • Die Sitzung/das Token wird mit einer eindeutigen Benutzerkennung verknüpft und enthält Informationen über seine Zugriffsrechte.
    • Der Server sendet eine HTTP-Antwort mit dem Statuscode 200 OK und überträgt die Sitzung (über Cookie) oder das Zugriffstoken an den Browser des Benutzers.
    • Der Browser speichert das Cookie oder das Token.
    • Der Benutzer wird auf die Hauptseite oder die Zielseite umgeleitet.
  6. Bei fehlgeschlagener Authentifizierung (falscher Benutzername oder Passwort):
    • Der Server sendet eine HTTP-Antwort mit einem Fehlercode (z.B. 401 Unauthorized) und einer Fehlermeldung.
    • Der Browser zeigt dem Benutzer eine Fehlermeldung auf der Anmeldeseite an.
  7. Bei nachfolgenden Anfragen an geschützte Ressourcen sendet der Browser automatisch die gespeicherte Sitzung (Cookie) oder das Zugriffstoken in den HTTP-Anforderungsheadern.
  8. Der Server überprüft die Gültigkeit der Sitzung/des Tokens und erlaubt den Zugriff auf die Ressource, wenn die Authentifizierung bestätigt ist und der Benutzer die erforderlichen Rechte besitzt.

Beispiel (Pseudocode):

# Auf dem Server
def login(username, password):
    user = database.find_user(username)
    if user and hash(password) == user.hashed_password:
        session_id = generate_session_id(user.id)
        database.save_session(session_id, user.id)
        return {"status": "success", "session_id": session_id}
    else:
        return {"status": "fail", "message": "Ungültige Anmeldeinformationen"}

# Auf dem Client (im Browser)
async function handle_login_submit(event):
    event.preventDefault();
    const username = document.getElementById("username").value;
    const password = document.getElementById("password").value;

    const response = await fetch("/api/login", {
        method: "POST",
        headers: {
            "Content-Type": "application/json"
        },
        body: JSON.stringify({ username, password })
    });

    const data = await response.json();
    if (data.status === "success") {
        // Der Server setzt ein Cookie mit session_id, oder wir können das Token aus der Antwort speichern
        window.location.href = "/dashboard";
    } else {
        alert(data.message);
    }