Junior
Írja le a felhasználói bejelentkezési folyamat mechanikáját a rendszerben.
sobes.tech MI
Válasz az MI-től
- A felhasználó beírja a hitelesítési adatait (felhasználónév és jelszó) a bejelentkezési oldalon.
- A böngésző HTTP POST kérést küld a szervernek a megadott adatokkal.
- A szerver fogadja a kérést, és átadja a hitelesítési komponensnek.
- 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.
- 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.
- 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.
- 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.
- 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);
}