Junior
Descrie mecanica procesului de autentificare a utilizatorului în sistem.
sobes.tech AI
Răspuns de la AI
- Utilizatorul introduce datele de autentificare (nume de utilizator și parolă) pe pagina de autentificare.
- Browserul trimite o solicitare HTTP POST către server cu datele introduse.
- Serverul primește solicitarea și transmite datele de autentificare către componenta de autentificare.
- Componentei de autentificare verifică datele primite cu informațiile din baza de date a utilizatorilor:
- Verifică dacă există un utilizator cu acel nume de utilizator.
- Hash-ează parola introdusă și o compară cu hash-ul parolei stocate pentru acel utilizator.
- În cazul autentificării reușite:
- Serverul creează o sesiune pentru utilizator sau generează un token de acces (de exemplu, JWT).
- Sesiunea/tokenul este asociat cu un identificator unic al utilizatorului și conține informații despre drepturile sale de acces.
- Serverul trimite un răspuns HTTP cu codul 200 OK și transmite sesiunea (prin cookie) sau tokenul de acces către browserul utilizatorului.
- Browserul salvează cookie-ul sau tokenul.
- Utilizatorul este redirecționat către pagina principală sau pagina țintă.
- În cazul eșecului autentificării (nume de utilizator sau parolă incorecte):
- Serverul trimite un răspuns HTTP cu un cod de eroare (de exemplu, 401 Unauthorized) și un mesaj de eroare.
- Browserul afișează un mesaj de eroare utilizatorului pe pagina de autentificare.
- În solicitările ulterioare către resurse protejate, browserul trimite automat sesiunea salvată (cookie) sau tokenul de acces în anteturile solicitării HTTP.
- Serverul verifică validitatea sesiunii/tokenului și permite accesul la resursă dacă autentificarea este confirmată și utilizatorul are drepturile necesare.
Exemplu (pseudo-cod):
# Pe 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": "Credențiale invalide"}
# Pe client (în 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") {
// Serverul va seta un cookie cu session_id, sau putem salva tokenul din răspuns
window.location.href = "/dashboard";
} else {
alert(data.message);
}