Sobes.tech
Junior

Írja le a felhasználói bejelentkezési folyamat mechanikáját a rendszerben.

sobes.tech MI

Válasz az MI-től

  1. A felhasználó beírja a hitelesítési adatait (felhasználónév és jelszó) a bejelentkezési oldalon.
  2. A böngésző HTTP POST kérést küld a szervernek a megadott adatokkal.
  3. A szerver fogadja a kérést, és átadja a hitelesítési komponensnek.
  4. A hitelesítési komponens ellenőrzi a kapott adatokat a felhasználók adatbázisában:
    • Ellenőrzi, hogy létezik-e ilyen felhasználónévvel felhasználó.
    • Hash-eli a megadott jelszót, és összehasonlítja a tárolt hash-sel.
  5. Sikeres hitelesítés esetén:
    • A szerver létrehoz egy munkamenetet a felhasználó számára, vagy generál egy hozzáférési tokent (pl. JWT).
    • A munkamenet/tokennel összekapcsolódik a felhasználó egyedi azonosítója, és tartalmazza a hozzáférési jogokat.
    • A szerver HTTP választ küld 200 OK kóddal, és átadja a munkamenetet (cookie-n keresztül) vagy a tokent a felhasználó böngészőjének.
    • A böngésző elmenti a cookie-t vagy a tokent.
    • A felhasználó átirányításra kerül a főoldalra vagy a célszemély oldalra.
  6. Sikertelen hitelesítés esetén (helytelen felhasználónév vagy jelszó):
    • A szerver HTTP választ küld hibakóddal (pl. 401 Unauthorized) és hibaüzenettel.
    • A böngésző megjeleníti a hibaüzenetet a felhasználónak a bejelentkezési oldalon.
  7. A következő kéréseknél a böngésző automatikusan elküldi a mentett munkamenetet (cookie) vagy a hozzáférési tokent a HTTP kérés fejlécében.
  8. A szerver ellenőrzi a munkamenet/tokennak érvényességét, és engedélyezi a hozzáférést, ha a hitelesítés megerősített és a felhasználónak megvannak a szükséges jogai.

Példa (pseudokód):

# A szerveren
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": "Érvénytelen hitelesítési adatok"}

# A kliens oldalon (a böngészőben)
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") {
        // A szerver beállít egy cookie-t a session_id-vel, vagy elmenthetjük a token-t a válaszból
        window.location.href = "/dashboard";
    } else {
        alert(data.message);
    }