Junior
Aprakstiet lietotāja pieteikšanās procesa mehāniku sistēmā.
sobes.tech AI
Atbilde no AI
- Lietotājs ievada savus akreditācijas datus (lietotājvārdu un paroli) pieslēgšanās lapā.
- Pārlūkprogramma nosūta HTTP POST pieprasījumu serverim ar ievadītajiem datiem.
- Servers pieņem pieprasījumu un nodod datus autentifikācijas komponentam.
- Autentifikācijas komponenta salīdzina saņemtos datus ar lietotāju datu bāzes informāciju:
- Pārbauda, vai ir lietotājs ar tādu pašu lietotājvārdu.
- Hashē ievadīto paroli un salīdzina to ar saglabāto paroli hash.
- Gadījumā, ja autentifikācija ir veiksmīga:
- Servers izveido sesiju lietotājam vai ģenerē piekļuves žetonu (piemēram, JWT).
- Sesija/piekļuves žetons ir saistīts ar unikālu lietotāja identifikatoru un satur informāciju par piekļuves tiesībām.
- Servers nosūta HTTP atbildi ar kodu 200 OK un nodod sesiju (caur sīkfailu) vai piekļuves žetonu pārlūkprogrammai.
- Pārlūkprogramma saglabā sīkfailu vai žetonu.
- Lietotājs tiek novirzīts uz galveno vai mērķa lapu.
- Neveiksmīgas autentifikācijas gadījumā:
- Servers nosūta HTTP atbildi ar kļūdas kodu (piemēram, 401 Unauthorized) un kļūdas ziņojumu.
- Pārlūkprogramma parāda kļūdas ziņojumu lietotājam pieslēgšanās lapā.
- Nākamajās pieprasījumos uz aizsargātajiem resursiem pārlūkprogramma automātiski nosūta saglabāto sesiju (sīkfailu) vai piekļuves žetonu HTTP galvās.
- Servers pārbauda sesijas/žetona derīgumu un ļauj piekļuvi resursam, ja autentifikācija ir apstiprināta un lietotājam ir nepieciešamās tiesības.
Piemērs (pseido-kods):
# 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": "Invalid credentials"}
# Klienta pusē (pārlūkprogrammā)
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") {
// Serveris iestatīs sīkfailu ar session_id vai varam saglabāt žetonu no atbildes
window.location.href = "/dashboard";
} else {
alert(data.message);
}