Junior
Beschreiben Sie die Mechanik des Benutzer-Login-Prozesses im System.
sobes.tech KI
Antwort von AI
- Der Benutzer gibt seine Anmeldedaten (Benutzername und Passwort) auf der Anmeldeseite ein.
- Der Browser sendet eine HTTP-POST-Anfrage an den Server mit den eingegebenen Daten.
- Der Server empfängt die Anfrage und übergibt die Anmeldedaten an die Authentifizierungskomponente.
- 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.
- 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.
- 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.
- Bei nachfolgenden Anfragen an geschützte Ressourcen sendet der Browser automatisch die gespeicherte Sitzung (Cookie) oder das Zugriffstoken in den HTTP-Anforderungsheadern.
- 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);
}